Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.03.25;
Скачать: [xml.tar.bz2];

Вниз

Откуда пробел?   Найти похожие ветки 

 
OW ©   (2011-11-29 16:48) [0]


function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string): string;
var
 fs: TFormatSettings;
begin
 fs.LongTimeFormat := format;
 Result := DateTimeToStr(Now, fs);
end;

 mmoDebug.Lines.Add ("=" + MyDateToStr(Now,"dd-mm-yyyy") + "=");
 mmoDebug.Lines.Add ("=" + MyDateToStr(Now,"hh-mm-ss dd-mm-yyyy") + "=" );


= 29-11-2011=
= 16-46-38 29-11-2011=

=[пробел]29-11-2011=
=[пробел]16-46-38 29-11-2011=


 
Компромисс   (2011-11-29 16:59) [1]

Всегда надо точное место ошибки локализовывать.
Например, проверить результат DateTimeToStr(Now, fs).


 
sniknik ©   (2011-11-29 17:00) [2]

недо инициализированная переменная, + параметр dt не используется.

так?
function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string): string;
begin
 DateTimeToString(Result, format, dt);
end;


 
Медвежонок Пятачок ©   (2011-11-29 17:07) [3]

//fs.LongTimeFormat := format;

fs.ShortTimeFormat := format;


 
OW ©   (2011-11-29 17:08) [4]


> sniknik ©   (29.11.11 17:00) [2]
> недо инициализированная переменная, + параметр dt не используется.

забыл убрать  dt .
да и так можно обойти
function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string): string;
begin
 Result := FormatDateTime(format, dt);
end;
или сразу, просто там еще поля могут передаваться, короче сложнее несколько :)
просто интересно стало, почему пробел(!?)
наверное, от недоинициализированности

всем спасибо.


 
Компромисс   (2011-11-29 17:24) [5]


> function TfrmDVBT.MyDateToStr(dt: TDateTime; format: string):
>  string;
> begin
>   Result := FormatDateTime(format, dt);
> end;


За подобные функции (если они такими создавались, а не эволюционировали) надо наказывать.


 
OW ©   (2011-11-29 17:32) [6]

>> Компромисс   (29.11.11 17:24) [5]
согласен
но это упрощение, говорю же


 
sniknik ©   (2011-11-29 17:38) [7]

> За подобные функции (если они такими создавались, а не эволюционировали) надо наказывать.
ты прикинь, реализация в VCL сама требует, вопиет можно сказать, о наказании... :)

function FormatDateTime(const Format: string; DateTime: TDateTime): string;
begin
 DateTimeToString(Result, Format, DateTime);
end;


 
Компромисс   (2011-11-29 17:47) [8]

sniknik ©   (29.11.11 17:38) [7]

Возможно, именно поэтому Borland была вынуждена продать Delphi :)


 
картман ©   (2011-11-29 17:49) [9]


> sniknik ©   (29.11.11 17:38) [7]

VCL: а почему она всегда за эталон?


 
Компромисс   (2011-11-29 17:50) [10]

sniknik ©   (29.11.11 17:38) [7]

Хотя я бы сказал, что это попытка исправить кривой дизайн. Надо было сразу сделать  DateTimeToString функцией, которая не только параметр меняет, но и возвращает его же в качестве результата.


 
Kerk ©   (2011-11-29 18:02) [11]


> картман ©   (29.11.11 17:49) [9]
>
> > sniknik ©   (29.11.11 17:38) [7]
>
> VCL: а почему она всегда за эталон?

Потому что VCL написана лучше, чем код в твоем проекте. Причем ни тебя, ни твой проект я не видел. Просто имею 99% вероятность угадать :)


 
Компромисс   (2011-11-29 18:04) [12]

Kerk ©   (29.11.11 18:02) [11]

Плохая "логика".


 
Kerk ©   (2011-11-29 18:08) [13]


> Компромисс   (29.11.11 18:04) [12]

Почему же плохая? Или ты написал уже что-то более читаемое, чем VCL? Теоретизировать каждый горазд, это я и сам могу. А как этот каждый попадет в большой проект, то сразу "ой".


 
Компромисс   (2011-11-29 18:12) [14]


> Почему же плохая? Или ты написал уже что-то более читаемое,
>  чем VCL? Теоретизировать каждый горазд, это я и сам могу.
>  А как этот каждый попадет в большой проект, то сразу "ой".
>


Плохая она в том, что надо стремиться не к лучшему из имеющихся, а к идеальному.


 
картман ©   (2011-11-29 18:16) [15]


> Kerk ©   (29.11.11 18:02) [11]


> Просто имею 99% вероятность угадать :)

Вот! Я именно о не о 100% ))
и не только: неужто они весь код могли прошерстить, да вышлифовать?


 
sniknik ©   (2011-11-29 23:56) [16]

> надо стремиться не к лучшему из имеющихся, а к идеальному.
идеального не бывает. это только образ в твоей голове. за такой легкой, неуловимой дымкой. но сними с образа покровы, рассмотри внимательней, и увидишь то еще убожество...

p.s. вот так и вырастают "неуклюжие романтики", говорят о прекрасном, а на деле и "просто красивого" сделать не могут. ;)


 
sniknik ©   (2011-11-29 23:58) [17]

> Надо было сразу сделать  DateTimeToString функцией
на DateTimeToString VCL не кончается... там есть куча примеров "прямого дизайна", где из функцию в функцию.


 
Германн ©   (2011-11-30 01:28) [18]


> идеального не бывает.

У некоторых бывает, но если я уточню у кого, то ветка перейдёт на политику. Поэтому молчу, надеюсь "тот самый некоторый" сам поймёт. :)


 
sniknik ©   (2011-11-30 08:07) [19]

> У некоторых бывает,
никогда не приходилось возвращаться к своему же старому коду? когда вроде и претензий нет, работает, хорошо, надежно... но. вот тут можно улучшить, вот тут упростить. тут ускорить, и вообще все как то "не так".
а ведь если бы было реально идеальным (близким к нему) то никакие переделки были бы не нужны. просто "образ в голове" меняется, с опытом, знаниями. то что тогда казалось самое "оно!" сейчас уже "совсем не то".
если у этого твоего "некоторого" не так, значит он не прогрессирует, остановился в развитии.


 
Компромисс   (2011-11-30 10:51) [20]

sniknik ©   (29.11.11 23:56) [16]

В данном примере я стремлюсь к тому, чтобы у меня вообще не было багов и кривых функций. Даже если у Вашего "эталона" VCL они есть.


 
Компромисс   (2011-11-30 10:54) [21]


> на DateTimeToString VCL не кончается... там есть куча примеров
> "прямого дизайна", где из функцию в функцию.


Каждый случай надо рассматривать отдельно. Я не вижу ничего плохого в коде вида

function f1(a, b: String):String;
begin
 Result = f2(a,b, 12);
end;


Если чо :)


 
Компромисс   (2011-11-30 10:55) [22]

sniknik ©   (30.11.11 08:07) [19]

Вот именно. Чего спорите, вообще непонятно. Речь не о том, чтобы улучшать код до идеального, а о том, чтобы сразу стараться писать идеально. Вспомним, с чего всё началось:


> За подобные функции (если они такими создавались, а не эволюционировали)
> надо наказывать.


 
sniknik ©   (2011-11-30 12:03) [23]

> у меня вообще не было багов и кривых функций.
а причем тут идеал?... крепкий, не кривой кувшин не значит "идеальный", а код значит? странно.

> Чего спорите, вообще непонятно
я ????

> Вспомним, с чего всё началось:
>> За подобные функции (если они такими создавались, а не эволюционировали)
>> надо наказывать.
т.е. наказывать нужно в любом случае... т.к. все меняется, представления об идеалах тоже... сегодня наказывать за то, что не близко к завтрашнему "идеалу", завтра к вчерашнему. и всегда есть сразу созданное, а не эволюционировавшее.


 
Компромисс   (2011-11-30 12:30) [24]


> я ????
>


Ну не я же первым на личные выпады перешел.


> т.е. наказывать нужно в любом случае... т.к. все меняется,
>  представления об идеалах тоже... сегодня наказывать за
> то, что не близко к завтрашнему "идеалу", завтра к вчерашнему.
>  и всегда есть сразу созданное, а не эволюционировавшее.
>


Конечно, сразу наказывать не стоит, особенно если код написан студентом. В первый раз следует объяснить, что и почему.  Но если после объяснения продолжается "быдлокодинг", то необходимо наказывать, а лучше уволить. Программист, не способный к обучению, нам не нужен. Переделывать за ним код может занять больше времени, чем написать самому.

Кстати, Ваш "подход" оправдывает любой код. Только вот подход неверный - некоторый код сразу плох и не только никогда не станет идеальным, но даже не перестанет быть плохим.


 
Kerk ©   (2011-11-30 12:33) [25]


> Компромисс   (30.11.11 10:51) [20]
>
> sniknik ©   (29.11.11 23:56) [16]
>
> В данном примере я стремлюсь к тому, чтобы у меня вообще
> не было багов и кривых функций.

Ну и в результате-то что? Получается?

Я тебя уже спрашивал, написал ли ты уже что-то более читаемое, чем VCL. Ответа не последовало, так что видимо, ответ -- нет. Так что старайся, старайся.


 
Kerk ©   (2011-11-30 12:40) [26]

Тут видишь ли в чем дело, дай любому студенту почитать Макконнелла и ещё каких-нибудь пару книжек и он тебе аргументировано объяснит, почему то, что ты пишешь -- жуткий быдлокод. Может быть даже подумает, что тебя нужно уволить. А напишет ли он что-то лучше тебя? Ну не факт, не факт.

Вырвать кусочек кода и начать его критиковать -- это очень легко. Но смысла в этом нет никакого.


 
Компромисс   (2011-11-30 12:47) [27]


> Я тебя уже спрашивал, написал ли ты уже что-то более читаемое,
>  чем VCL. Ответа не последовало, так что видимо, ответ -
> - нет. Так что старайся, старайся.


Извини, я не понял, что ты меня спрашивал. Да, я написал несколько своих framework, правда, на Java, а не Delphi. Есть и библиотеки своих компонентов на Flex. Показать не могу, конечно :)

Только ведь это не важно. Как там у Бернарда Шоу - "Чтобы оценить вкус яичницы, необязательно нести яйца"? Если я вижу недостаток в коде, я на него указываю. Если в моем коде кто-то видит недостатки, пусть тоже указывает. А как иначе???


 
Компромисс   (2011-11-30 12:50) [28]


> Вырвать кусочек кода и начать его критиковать -- это очень
> легко. Но смысла в этом нет никакого.


А я вот вижу смысл. Из мелких деталей складывается общая картина. Здесь как-то проскакивала ссылка на статью, где американец рассказывал, как он проводит интервьюирование программистов. Дает простое задание и смотрит на то, как именно и на какой скорости ее решают. У хорошего программиста хороший код пишется на автомате, вплоть до именования аргументов методов.


 
Kerk ©   (2011-11-30 13:09) [29]

А, бесполезный разговор. Просто выложи свой код, строчек 500-1000 хотя бы. И мы будем его как пример хорошего кода вместо VCL показывать.

> Как там у Бернарда Шоу - "Чтобы оценить вкус яичницы, необязательно
> нести яйца"?

Вот это вот совсем ни к чему. Если продолжать аналогию, то ты критикуешь яичницу на форуме поваров. Так почему бы тебя не попросить приготовить свою яичницу, показав всем пример?


 
Компромисс   (2011-11-30 13:16) [30]


> Вот это вот совсем ни к чему. Если продолжать аналогию,
> то ты критикуешь яичницу на форуме поваров. Так почему бы
> тебя не попросить приготовить свою яичницу, показав всем
> пример?


Я приготовил яичницу еще в Компромисс   (29.11.11 17:50) [10]

Могу еще привести пример. Методы по умолчанию должны иметь модификатор protected, а не private. Чтобы потом не пришлось костыли искать. То есть должна быть причина, почему разработчик использовал именно private. Если причины нет, то следовало использовать protected.


 
Игорь Шевченко ©   (2011-11-30 13:49) [31]


> Методы по умолчанию должны иметь модификатор protected,
> а не private. Чтобы потом не пришлось костыли искать. То
> есть должна быть причина, почему разработчик использовал
> именно private. Если причины нет, то следовало использовать
> protected


"Вы, сударь, ерунду говорите. И хуже всего то, что говорите безапеляционно и уверенно"


 
sniknik ©   (2011-11-30 13:58) [32]

> Могу еще привести пример.
твои примеры не "яичница", скорее набор предрассудков.


 
Компромисс   (2011-11-30 14:00) [33]

Игорь Шевченко ©   (30.11.11 13:49) [31]

Могу объяснить. По умолчанию, следует считать, что когда-то кто-то захочет написать наследника, в котором захочет изменить указанный метод.


 
sniknik ©   (2011-11-30 14:04) [34]

> Если я вижу недостаток в коде, я на него указываю.
первый "недостаток" на который указал это просто стиль написания. удобство для каждого конкретно... ну к примеру функцию со своим значимым названием использовать, а не стандартную, + может пару тройку аргументов убрать, писать меньше, и т.д.
что такого то?
наказать только потому, что ТЕБЕ непонятно зачем, потому, что не соответствует ТВОИМ идеалам?
а ты вернись к ним лет так через 5. перепроверь.


 
Компромисс   (2011-11-30 14:04) [35]


> твои примеры не "яичница", скорее набор предрассудков.


Моя яичница в [10]. К ней есть претензии?


 
Компромисс   (2011-11-30 14:09) [36]

sniknik ©   (30.11.11 14:04) [34]

Согласен, смысл есть. Чтобы легко можно было поменять реализацию метода, а не менять вызовы стандартного метода по всей программе. Но не в данном случае с format date :)
myAssignFile
myWrite
myCloseFile

Жалко, myFor не написать :)


 
Компромисс   (2011-11-30 14:13) [37]

Игорь Шевченко ©   (30.11.11 13:49) [31]

Кстати, в той же java модификатор по умолчанию позволяет даже больше, чем protected. Так что не только я так думаю, получается :)


 
Игорь Шевченко ©   (2011-11-30 14:25) [38]

Компромисс   (30.11.11 14:00) [33]


> Могу объяснить. По умолчанию, следует считать, что когда-
> то кто-то захочет написать наследника, в котором захочет
> изменить указанный метод.


А вот тот же МакКоннел считает, что "интерфейс класса должен сообщать как можно о внутренней работе класса." (стр. 89)
И Фаулер считает, что "делайте каждый метод как можно более закрытым" (стр. 306)

Я склонен их опыту доверять больше. Более того, я даже больше склонен доверять своему опыту, который показывает, что по мере развития классов часть методов может оказаться неиспользуемыми. В случае [strict]private компилятор скажет, что метод не используется, а в остальных случаях у него этой информации нету.


 
Компромисс   (2011-11-30 14:34) [39]


> А вот тот же МакКоннел считает, что "интерфейс класса должен
> сообщать как можно о внутренней работе класса." (стр. 89)
> И Фаулер считает, что "делайте каждый метод как можно более
> закрытым" (стр. 306)


Я тоже с ними согласен. Потому что они говорят о случае, когда наследников нет и не будет. Иначе не было бы фразы "интерфейс класса должен сообщать как можно о внутренней работе класса.". Я бы еще рекомендовал добавлять final модификатор к самому классу, чтобы никто наследников и не пытался писать.


 
Игорь Шевченко ©   (2011-11-30 15:09) [40]


> Потому что они говорят о случае, когда наследников нет и
> не будет


не говорят



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2012.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.004 c
2-1323374485
Gu
2011-12-09 00:01
2012.03.25
Openfolder


15-1322521917
Vyacheslav
2011-11-29 03:11
2012.03.25
TListBox и DragDrop файлов из проводника


15-1322552540
OW
2011-11-29 11:42
2012.03.25
Так просто ,вопрос об амбициях


2-1323332433
TComponent
2011-12-08 12:20
2012.03.25
Вопрос по WinExec


6-1254316524
Абрамов Игорь
2009-09-30 17:15
2012.03.25
Отправка почты Exchange Server





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский