Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

Вредные советы чайникам   Найти похожие ветки 

 
Leonid Troyanovsky ©   (2007-11-12 15:25) [0]

Hi, All!

Попробую выделить из ветки
http://delphimaster.net/view/15-1194730016/
отдельно тему написания списка советов, осмысление
которых должно помочь избавлению от некоторых заблуждений,
(и порождаемых ими ошибках) связанных с програмированием в дельфи.

В теме "Самые распространенные дельфийские заблуждения"
остался недописанный портрет КП - Крутого прогера (раб. название)
и все обсуждения по теме.

Т.е., я надеюсь, что в этой ветке мы будем обсуждать
проблемы чайников, а в той - все остальное.

А вот и сам Список вредных советов чайнику:

Оформление исходников и написание комментариев - пустая трата времени.

Помни, что за создание объектов и выделение памяти отвечает А.С.Пушкин.

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

Всегда полагай, что деструктор обнулит все твои ссылки на объект.

Сообщение Access Violation относится не к твоим программам.

Try finally/except - тупые примочки, загромождающие код.

Лучший способ повторного использования кода - это copy & paste.

Разбивай приложение на exe & dll и смело передавай между ними классы.

Используй дельфийские глобальные переменные формы FormX.

Навсегда забудь про Screen, Application, DecimalSeparator и прочую лабуду.

Почаще пользуй  функции win32 API, но никогда не вызывай Win32Check.

Создавай побольше потоков, заморочиваться же с Synchronize не стоит.

Убогий TListBox (TDrawGrid, ..) замени парой десятков кнопок, Edit.

Записи из списка всегда  удаляй  в цикле for начиная с 0.

List index out of bounds - это фича, а не баг.

Инсталяторы придумали лузеры, у твоих юзеров и так все есть.

Record с полями String весьма удобен для файлового ввода/вывода.


Да, еще хотел добавить, что для некоторых утверждений
может потребоваться доказательная база, а
доказать все я один не смогу :)

--
Regards, LVT.


 
tesseract ©   (2007-11-12 15:29) [1]

Вдогонку - возврат из функции Pchar объявленного в функции - лучший из вариантов.


 
antonn ©   (2007-11-12 15:32) [2]

всегда рисуй на панели, а не специализированных контролах...


 
Reindeer Moss Eater ©   (2007-11-12 15:34) [3]

Тоже распространенное заблуждение:
Формирутся строка с помощью многоступенчатых Copy, Delete и Pos, которая передается аргументом куда-либо. Например в CopyFile.
И если при этом CopyFile ничего не копирует, то проверять что же именно передается в качестве аргумента не надо, так как алгоритм формирования не может быть ошибочным.


 
Leonid Troyanovsky ©   (2007-11-12 15:43) [4]


> tesseract ©   (12.11.07 15:29) [1]

> Вдогонку - возврат из функции Pchar объявленного в функции
> - лучший из вариантов.

Причесать не могу, а если все точно описать  - больно громоздко.

Зато могу другой.

Функция, возвращающая объект - гораздо круче его конструктора.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-11-12 15:50) [5]


> Reindeer Moss Eater ©   (12.11.07 15:34) [3]

> Тоже распространенное заблуждение:

Как-то АП рассказывал, как следует использовать (и почему)
локальные переменные, но, боюсь, не сформулирую точно.

Кста, with тут болтался-болтался и выпал.

А глобальные переменные, во-ще, сгинули.
Т.е.

Глобальные переменные много полезней локальных.

--
Regards, LVT.


 
boriskb ©   (2007-11-12 15:54) [6]

> [0] Leonid Troyanovsky ©   (12.11.07 15:25)


Ты как то сам упоминал, что "сваливаешься на конкретику".
Частных случаев столько много, что не хватит ни 10, ни 100, боюсь и 1000 пунктов не хватит.
И решить какие из них "важней" невозможно.

На мой взляд надо бы писать что-то вроде:
(цитата из родительской ветки)
[307] Сергей Суровцев ©   (12.11.07 14:40)
Возлюби F1 и (список литературы) как самое себя.
Не возжелай совета ближнего своего, ни кода его, пока не все испробовал сам.
А из вредных:
Чтение отнимает время и портит зрение. Всегда спрашивай любую мелочь.
Никогда не формулируй понятно свой вопрос. Доставь людям удовольствие от угадывания его смысла.



 
Leonid Troyanovsky ©   (2007-11-12 16:02) [7]


> boriskb ©   (12.11.07 15:54) [6]

> Ты как то сам упоминал, что "сваливаешься на конкретику".

Неа, я переживал за философию.
А то, что их больше 10 - не страшно, сейчас наберем,
а потом отсеем самые полезные.


> На мой взляд надо бы писать что-то вроде:

Про заповеди я отвечал, правда не Сергею.

Ну, а если тебе, то скажу, что заповеди я не потяну,
кто захочет, тот сделает - материал-то публичный.
А вот советы должны быть конкретными, даже в ущерб юмору, IMHO.

--
Regards, LVT.


 
vpbar ©   (2007-11-12 16:04) [8]


> Функция, возвращающая объект - гораздо круче его конструктора.

Конечно круче. http://delphimaster.net/view/11-1193577066/ тому пример :)


 
boriskb ©   (2007-11-12 16:05) [9]

> А вот советы должны быть конкретными,

Ок.
Значит я не правильно понял тебя с самого начала :)


 
Anatoly Podgoretsky ©   (2007-11-12 16:08) [10]

> Leonid Troyanovsky  (12.11.2007 16:02:07)  [7]

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


 
Сергей Суровцев ©   (2007-11-12 16:10) [11]

>Leonid Troyanovsky ©   (12.11.07 16:02) [7]
>А то, что их больше 10 - не страшно, сейчас наберем,
>а потом отсеем самые полезные.

Вот это чисто по-российски. А может лучше самые полезные как раз оставить?


 
Сергей Суровцев ©   (2007-11-12 16:22) [12]

>Leonid Troyanovsky ©   (12.11.07 16:02) [7]
>А вот советы должны быть конкретными, даже в ущерб юмору, IMHO.

В ущерб юмору это потеряет вообще всякий реальный смысл.

Если цикл ты замыслил,
Переменную назначил,
То используй непременно,
После цикла ты ее.
Ну а если будет вылет,
(Кто бы в этом сомневался),
Глючный Делфи поругаешь,
Ты на форуме потом.


 
Anatoly Podgoretsky ©   (2007-11-12 16:30) [13]

> Anatoly Podgoretsky  (12.11.2007 16:08:10)  [10]

Вот еще типовой вопрос, относится к пунктам инсталяции БДЕ - всегда помещайте ДЛЛ рядом с программой.


 
Anatoly Podgoretsky ©   (2007-11-12 16:39) [14]

> Anatoly Podgoretsky  (12.11.2007 16:30:13)  [13]

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


 
Anatoly Podgoretsky ©   (2007-11-12 16:40) [15]

> Сергей Суровцев  (12.11.2007 16:10:11)  [11]

:-)


 
Игорь Шевченко ©   (2007-11-12 16:50) [16]

Вызывать конструктор нужно так:
var
 Form1: TForm1;

...

 Form1.Create;


 
ferr   (2007-11-12 17:06) [17]

совет:Пишите программы.


 
ferr   (2007-11-12 17:13) [18]

А по делу:

Нужно дерево? Зачем парится, можно использовать TreeView выставив visible = false.

Нужно сделать подсветку синтаксиса? Используйте TRichEdit.

Нужно остортировать массив? Пишите пузырёк ведь все так делают.

Программа должна посчитать какое-то значение? Ни в коем случае не пишите консольное приложение -- это прошлый век.

Нужно отсортировать что либо а пузырёк писать не умеете? Сгодится любая субд.


 
ferr   (2007-11-12 17:16) [19]

Если ваш сосед пишит на другом языке, то непременно потратьте неделю на поиске информации о том что язык используемый соседом давно устарел, уродлив и вот-вот помрёт.


 
Leonid Troyanovsky ©   (2007-11-12 17:26) [20]


> Сергей Суровцев ©   (12.11.07 16:10) [11]

> >а потом отсеем самые полезные.

> Вот это чисто по-российски. А может лучше самые полезные
> как раз оставить?

А и не предлагал выбрасывать, лишь отсеять - операция такая.
Разделить фракции - так понятней?

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-11-12 17:30) [21]


> Сергей Суровцев ©   (12.11.07 16:22) [12]

> Если цикл ты замыслил,

Цикл замыслил АП :)
Ну, а чего, форма доходчивая, и не в ущерб смыслу.

Можно и так, дерзай ;)
Я ж говорю, материал есть, и он публичный.

--
Regards, LVT.


 
homm ©   (2007-11-12 17:32) [22]

> [0] Leonid Troyanovsky ©   (12.11.07 15:25)
> Попробую выделить из ветки

Славя хочется? :)


 
Marser ©   (2007-11-12 17:35) [23]

ещё смачно

for i:=0 to SomeList.Count do

:-)


 
Leonid Troyanovsky ©   (2007-11-12 17:38) [24]


> homm ©   (12.11.07 17:32) [22]

> Славя хочется? :)

Не, индекс цитирования поднимаю ;)

--
Regards, LVT.


 
@!!ex ©   (2007-11-12 17:47) [25]

>
>
> [23] Marser ©   (12.11.07 17:35)
> ещё смачно
>
> for i:=0 to SomeList.Count do
>
> :-)

Обычно делают вот так:
for i:=1 to SomeList.Count do


 
Leonid Troyanovsky ©   (2007-11-12 17:48) [26]


> Anatoly Podgoretsky ©   (12.11.07 16:08) [10]

> Как я понял ты уже готов на серию?

Не, Анатолий, к серии не готов :)

Да, и на самом деле, если не касаться БД, или местного нетикета,
т.е., куда лезть мне не хочется, то фонтан быстро иссякнет.

Сейчас перейду в собиратели, да и попробую предсказательную силу
уже собранного. Ну, а затем, наиболее полезные попробую обосновать.

--
Regards, LVT.


 
Сергей Суровцев ©   (2007-11-12 18:05) [27]

Если книжек начитавшись
Пишешь в тексте коментарий,
Помни - это оскорбляет,
Всех читающих твой код.


 
ocean ©   (2007-11-12 18:24) [28]

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


 
Anatoly Podgoretsky ©   (2007-11-12 18:46) [29]

> Игорь Шевченко  (12.11.2007 16:50:16)  [16]

Было в форме var := Class.Create


 
Anatoly Podgoretsky ©   (2007-11-12 18:47) [30]

> ferr  (12.11.2007 17:06:17)  [17]

Это вредный или полезный совет, на мой взгляд вредный, правильнее купить.


 
Anatoly Podgoretsky ©   (2007-11-12 18:48) [31]

> homm  (12.11.2007 17:32:22)  [22]

Ну вот пришел и все опошлил.


 
Anatoly Podgoretsky ©   (2007-11-12 18:49) [32]

> Leonid Troyanovsky  (12.11.2007 17:48:26)  [26]

Серия начинается с двух


 
Anatoly Podgoretsky ©   (2007-11-12 18:49) [33]

> Сергей Суровцев  (12.11.2007 18:05:27)  [27]

А не хочешь после публикации сделать стихотворную версию?


 
kaif ©   (2007-11-12 18:57) [34]

Вот я ту для SQL набросал (алаверди к Johnmen-у):

1. нормализация баз данных от лукаваго - все запихай в одну широкую таблицу
2. почаще используй TTable + OnFilterRecord
3. чтобы не получать key violation дропни уникальные индексы
4. генераторы в interbase вызывают только в триггере before insert.
5. настоящие парни все делают только через ХП
6. сборка мусора помогает уменьшить размер файла базы данных interbase
7. у ORACLE лучший оптимизатор запросов
8. сначала напиши все запросы, потом ускоряй их работу, пробуя создавать всякие индексы, а если уже ничего не помогает, задавай вопросы на форум, нормализацию оставь на будущее.
9. У крутых sql-щиков самые многоэтажные запросы. Поэтому не стесняйся спросить на форуме "почему у меня не работает такой вот запрос?", приведя сразу все 100 строк его текста.
10. Предметные ключи лучше суррогатных.
11. Изучай SQL на примере MySQL
12. Правильный запрос авторизации в web делается так:
 "select * from users where user_name=""+s1+"" and password=""+s2+""",
где s1 и s2 - параметры, полученные методом GET.
13. Если не знаешь, какие нужны справочники, все запихай в дерево.
14. Дерево обходят с помощью запроса select * from <table>, полного фетча и запуска рекурсивной процедуры над полученным набором. Потом все это нужно сунуть в TreeView. Есть такие TreeView, которые сами это все сделают за тебя.
15. Если видишь дубликаты, используй слово DISTINCT. Если тебе говорят про декартово произведение, тем более используй DISTINCT.


 
Anatoly Podgoretsky ©   (2007-11-12 18:59) [35]

> kaif  (12.11.2007 18:57:34)  [34]

1. видал
9. сам приводил на sql.ru - 21000 символов
10. убьют


 
ferr   (2007-11-12 19:02) [36]

> [30] Anatoly Podgoretsky ©   (12.11.07 18:47)
> Это вредный или полезный совет, на мой взгляд вредный, правильнее
> купить.

Вредный конечно.


 
kaif ©   (2007-11-12 19:15) [37]

Если на твои запросы
Сервер долго соображает,
Это значит, что крутые
Ты запросы наваял.

Если у твоей таблицы
Двести сорок пять колонок,
Значит полный экспорт в Эксел
Можешь смело начинать.

Ты свои поля старайся называть
(Чтоб легче помнить) именем своей
Собаки и соседских двух котов.
Если этого не хватит, разбавляй
Названья цифрой,
Например: kot_barsik_30
Будет здорово звучать.


 
Johnmen ©   (2007-11-12 19:20) [38]


> kaif ©   (12.11.07 18:57) [34]

Ашот, ты упустил одни из главных моментов. Я о них говорил в той ветке -
про записи в DBGrid (это бОянище из бОянов) и про RecordCount (очень частый момент).


 
Leonid Troyanovsky ©   (2007-11-12 19:23) [39]


> Anatoly Podgoretsky ©   (12.11.07 18:49) [33]

> А не хочешь после публикации сделать стихотворную версию?

Неплохо бы еще и в виде сказок, т.е. для самых маленьких.

--
Regards, LVT.


 
kaif ©   (2007-11-12 19:39) [40]

2 Johnmen ©   (12.11.07 19:20) [38]
OK

Если хочешь ты в таблице
Сумму чисел получить,
То возми сначала сетку,
К ней запросец подключи.

Если сетка не умеет
Вдруг колонку плюсовать,
Ты в отчаянье не падай,
Смело цикл напиши.

В этом цикле целой ишке
ты присвоишь постепенно
Все с нуля до РекордКаунт
(Свойство у запросца есть)

После этого, присвоив
РекордНо запросца ишке,
Ты увидишь, как в таблице
Ходишь ты от верху книзу.

Это код почти готовый
И коммерческий к тому же,
Остается только сумму
В переменной накопить.

Если же в твоем запросце
РекордКаунт странно глючит,
Значит нужно очень срочно
На ADO переходить.


 
Leonid Troyanovsky ©   (2007-11-12 19:56) [41]

Итак, к настоящему времени мы собрали воедино информацию,
добытую с потом и кровью, нами и нашими предшественниками.

Вредные заветы и советы

Заветы

Самое бредовое чтиво это Delphi help & VCL sources, да и MSDN.

Оформление исходников и написание комментариев - пустая трата времени.

Помни, что за создание/разрушение объектов, выделение/освобождение памяти,
и закрытие хендлов отвечает А.С.Пушкин.

Try finally/except - модные примочки, загромождающие код.

Учи своих юзеров не пугаться Access Violation.

Лучший способ повторного использования кода - это copy & paste.

Глобальные переменные много полезней локальных.

Инсталяторы делают для лузеров, у твоих юзеров и так все есть.

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

Советы

Не используй локальные переменные для промежуточных результатов,
смелей пользуй with и вложенные вызовы функций.

Всегда полагай, что деструктор обнулит все твои ссылки на объект.

Разбивай приложение на exe & dll и смело передавай между ними классы.

Создавай побольше потоков, заморочиваться же с Synchronize не стоит.

Почаще пользуй  функции win32 API  и никогда не вызывай Win32Check.

Используй дельфийские глобальные переменные формы FormX,
и навсегда забудь про Screen, Application, DecimalSeparator и прочую лабуду.

Убогий TListBox (TDrawGrid, ..) замени парой десятков кнопок, Edit"ов.

Для объекта var вызывай конструктор так: var.Create.

Не забывай вызов конструктора защитить секцией try-finally.

Не думай, что исключение в конструкторе вызовет деструктор автоматом.

Функция, возвращающая объект круче чем его конструктор.

Неплохо выглядят и функция, возвращающая  PChar на распределенную функцией строку.

Записи из списка всегда  удаляй  в цикле for начиная с 0.

Перебрать список лучше так for i:= 1 to List.Count do, а символы строки - с i:= 0.

List index out of bounds - это фича, а не баг.

Запомни, что типы PChar & String друг к другу не приводятся.

Record с полями String весьма удобен для файлового ввода/вывода.

Стремись представить разность дат в годах, месяцах и днях.


Если что важное пропустил, напомните, плиз.
А завтра присвоим номера, для дальнейшей идентификации, т.с.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-11-12 20:09) [42]


> Leonid Troyanovsky ©   (12.11.07 19:56) [41]

Чтобы создать объект X: TX вызывай конструктор так: X.Create.

Зачитался Анатолием, sorry.

--
Regards, LVT.


 
turbouser ©   (2007-11-12 20:42) [43]


> Leonid Troyanovsky

Хинты и варниги борланд придумал для устрашения ламеров. Не стоит обращать на них внимание
:-)


 
Riply ©   (2007-11-12 20:51) [44]

> [43] turbouser ©   (12.11.07 20:42)
> Хинты и варниги борланд придумал для устрашения ламеров. Не стоит обращать на них внимание

Особо продвинутые их просто отключают :)


 
turbouser ©   (2007-11-12 20:52) [45]


> Riply ©   (12.11.07 20:51) [44]

Это уже продвинутые чайники :)


 
Сергей Суровцев ©   (2007-11-12 21:48) [46]

>Anatoly Podgoretsky ©   (12.11.07 18:49) [33]
>А не хочешь после публикации сделать стихотворную версию?

Когда таковая будет, очень даже за.


 
Сергей Суровцев ©   (2007-11-12 21:51) [47]

Жизнь коротка. Не трать ее на написание длинных осмысленных названий переменных.


 
Anatoly Podgoretsky ©   (2007-11-12 22:29) [48]

> Сергей Суровцев  (12.11.2007 21:48:46)  [46]

Хорошо, напомним.


 
SergeyIT   (2007-11-12 22:36) [49]

> разность дат в годах, месяцах и днях
А этот пункт относится к заказчикам, но сюда они не ходят.


 
Игорь Шевченко ©   (2007-11-13 10:08) [50]

kaif ©   (12.11.07 18:57) [34]


> 9. У крутых sql-щиков самые многоэтажные запросы. Поэтому
> не стесняйся спросить на форуме "почему у меня не работает
> такой вот запрос?", приведя сразу все 100 строк его текста.
>


100 - это деткий сад. Настоящие запросы начинаются от 1000 строк.


> 10. Предметные ключи лучше суррогатных.


И впрямь лучше. Не дай Аллах столкнуться с произведением поклонников Тенцера.


 
Kolan ©   (2007-11-13 10:43) [51]

> Инсталяторы придумали лузеры, у твоих юзеров и так все есть.

Из опыта конторы где я работаю я бы сказал так:

Инсталяторы придумали лузеры, лучьше завести папку на диски &laquo;Ц&raquo;, класть туда экзешники, а для настроек использовать 1(один!) ини на все программы.
Это я так жалуюсь&#133

А вообще формат советов надо передрать у Остера, там смешно :)


 
Ega23 ©   (2007-11-13 11:01) [52]


> kaif ©   (12.11.07 18:57) [34]


С пунктами 5 и 14 в общем случае - не согласен. В частных - возможно, а в общем - нет.


 
Romkin ©   (2007-11-13 11:18) [53]

Еще совет: все переменные должны иметь максимально краткие имена, желательно с использованием букв S l I O и цифр 5 0 1 вперемешку :)


 
Romkin ©   (2007-11-13 11:22) [54]

То есть, если вам нужны несколько похожих переменных, называйте их a1, al и aI. Это добавит динамичности программе.


 
Sonia ©   (2007-11-13 11:38) [55]


> Leonid Troyanovsky ©   (12.11.07 19:56) [41]

А мне в первоначальной интерпретации казалось лучше...веселее и доступнее


 
Romkin ©   (2007-11-13 11:41) [56]


> > 10. Предметные ключи лучше суррогатных.И впрямь лучше.
>  Не дай Аллах столкнуться с произведением поклонников Тенцера.
>

Поддерживаю! Правда, прошу отличать естественные, искусственные и суррогатные ключи. О разнице см. Селко.
Как правило, бывает еще более жестоко: у каждой таблицы первичный ключ всегда из одного поля, это поле - автоинкремент, и все связи неидентифицирующие. У меня как раз на экране результат сейчас, безжалостный и беспощадный. :(
Правда, хорошо медитировать: смотришь на блок в три-пять таблиц и проникаешься...


 
Sonia ©   (2007-11-13 11:41) [57]

To Leonid Troyanovsky, все-таки лучше всем собраться, поразмыслить и придумать вредные советы в стихах (почти в стихах, как у Г.Остера), только не очень длиные - по 6-8 строк

Я думаю стоит организовать так:

Вредные советы от ДельфиМастеров:
1) <наименование вредного совета>:
<описание вредного совета в стихах>


 
Anatoly Podgoretsky ©   (2007-11-13 11:41) [58]

> Игорь Шевченко  (13.11.2007 10:08:50)  [50]

Это тоже детский сад, на порядок больше надо, примерно страниц 10-20 текста.
Я бы выложил пример, но форум не позволяет столько опубликовать.


 
Anatoly Podgoretsky ©   (2007-11-13 11:57) [59]

> Romkin  (13.11.2007 11:22:54)  [54]

Не используйте более двух символов в идентификаторах, первый символ буква, а второй цифра -  и далее про динамику, или крутизну, или поможем компьютеру зачем ему заниматься разбором.


 
Romkin ©   (2007-11-13 12:02) [60]

Anatoly Podgoretsky ©   (13.11.07 11:57) [59] А как же великолепные имена a1I aOI a01 alI al1 и тд? :)


 
Kolan ©   (2007-11-13 12:03) [61]

Если переменную
для понятия зарплата
тебе надо объявить
назови её ZRPLATA
или просто буквой Z

ЗЫ
Еще дополнить бы конец&#133


 
Игорь Шевченко ©   (2007-11-13 12:05) [62]

Romkin ©   (13.11.07 12:02) [60]

Каждый дурак знает, что значит имя VG :)


 
Anatoly Podgoretsky ©   (2007-11-13 12:05) [63]


> Sonia ©   (13.11.07 11:41) [57]

Должно быть два варианта, обычный и в стихах, вариант в стихах может быть доступен по ссылке на конкретный стих и на страницу, если размер получится небольшой то можно на одной странице.

Вредные советы от ДельфиМастеров:
1) <наименование вредного совета>: <ссылка на стих>
...

Вредные советы от ДельфиМастеров в стихах:
1) стих
...


 
Anatoly Podgoretsky ©   (2007-11-13 12:07) [64]

> Romkin  (13.11.2007 12:02:00)  [60]

> А как же великолепные имена a1I aOI a01 alI al1 и тд? :)

Это для эстетов, особенно AOL
Я за Бейсик PDP


 
Sonia ©   (2007-11-13 12:21) [65]


> Anatoly Podgoretsky ©   (13.11.07 12:05) [63]

Да и еще я думаю стоит разделить на темы, например, по разделам форума


 
den303 ©   (2007-11-13 12:39) [66]

Если хочешь запуздырить
В трэй иконку ты быстрее -
Обратись на Дельфимастер,
Будут рады все вопросу!


 
Leonid Troyanovsky ©   (2007-11-13 14:29) [67]

Hi, All!

Список теперь нумерован,
при поправках просьба ссылаться на номер записи.

Да, т.к. портрет КП оказался не очень привлекательным,
и, видимо, дописан не будет, позаимствуем хоть что-то полезное.

Заветы

0. Самое бредовое чтиво: Delphi help & VCL sources, да и MSDN тоже.

1. Не читай и warnings & hints компилятора - на высоту полетов они не влияют.

2. Помни, что за создание/разрушение объектов, выделение/освобождение памяти,
закрытие хендлов и пр. отвечает А.С. Пушкин.

3. Глобальные переменные много полезней локальных.

4. Обрабатывай исключения так, чтобы о них никто не догадывался.

5. Всегда доверяй своему вкусу, чаще радуй юзеров свежими решениями.

5. Инсталяторы делают для лузеров, у твоих юзеров и так все есть.

7. Помни, что resourcestring придумали для развивающихся стран -
наши программисты вставляют текстовые константы в код.

8. Лучший способ повторного использования кода - copy & paste.

9. И не ищи в Delphi легких путей, помни: шрамы украшают настоящего дельфера.

Советы

00. Никогда не занимайся украшательством, т.е.:
- масимально сократи имена классов, методов, переменных;
- убери лишние пробелы, переводы строки и всяческие комментарии;
- объедини все юниты в один.
Словом, сделай все, чтобы максимально ускорить компиляцию и получить качественный exe.

Вот образцы хороших имен: lS, I5, l1 O0; не хватит букв - добавь цифр.

01. Не используй локальные переменные для промежуточных результатов,
смелей пользуй with и вложенные вызовы функций.

02. Всегда полагай, что деструктор обнулит все твои ссылки на объект.

03. Разбивай приложение на exe & dll и смело передавай между ними классы.

04. Создавай побольше потоков, заморочиваться же с Synchronize не стоит.

05. Почаще пользуй  функции win32 API  и никогда не вызывай Win32Check.

06. Используй дельфийские глобальные переменные формы FormX,
и навсегда забудь Screen, Application, DecimalSeparator и пр.

07. Убогий TListBox (TDrawGrid, ..) замени парой десятков кнопок, Edit"ов.

08. Создавая объект X класса TX вызывай конструктор так: X.Create.

09. Не забывай вызов конструктора защитить секцией try-finally.

Не думай, что исключение в конструкторе вызовет деструктор автоматом.

0A. Функция, возвращающая объект круче его конструктора.

0B. Неплохо выглядит и функция, возвращающая  PChar на распределенную ею строку.

0C. Перебирать список лучше так: for i := 1 to List.Count, а символы String - с i := 0.

0D. Записи из списка всегда удаляй в цикле for начиная с 0.

0E. List index out of bounds - это фича, а не баг.

0F. Запомни, что типы PChar & String друг к другу не приводятся.

10. Record с полями String весьма удобен для файлового ввода/вывода.

11. Не рисуй в PaintBox - это удобней делать на панели, столе, обоях и стенах.

12. Стремись представить разность дат в годах и месяцах и днях.


И снова прошу, если чего упустил, напомните, плиз.
Системы контроля версий пока нет, по старой ветке лазить тяжело.

--
Regards, LVT.


 
Kolan ©   (2007-11-13 14:39) [68]

Regards, LVT.
Никогда не нумеруй списки для людей в Hex?


 
Leonid Troyanovsky ©   (2007-11-13 14:51) [69]


> Kolan ©   (13.11.07 14:39) [68]

> Никогда не нумеруй списки для людей в Hex?

Да, хотел еще мелким шрифтом, но нет его.

--
Regards, LVT.


 
Petr V. Abramov ©   (2007-11-14 00:03) [70]

все советы надо предварить постулатом
если Вы работаете с клиент-сервер СУБД, то
1. от админа не защиты, т.к. не предусмотрена в принципе
2. Хуже дурака только дурак с правами админа.
http://delphimaster.net/view/11-1193577066/


 
Amoeba ©   (2007-11-14 00:08) [71]

Вот материалец с вредным и полезным советами рядышком:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=56892


 
Германн ©   (2007-11-14 02:00) [72]


> Amoeba ©   (14.11.07 00:08) [71]

LVT пока не хочет вплотную заниматься темами относящимися "только" к БД.
Кстати ему бы могли в этом деле помочь (взять на себя составление списка) Коля и Женя. Да и Толян бы тоже не помешал :-)


 
MsGuns ©   (2007-11-14 23:10) [73]

Ходят слухи, что Тексейра
Вместе с Пачеком ругают
Тех, кто код свой набирает
Как придется, на авось
Наплевав на переносы,
на абзацы и на стиль
Невдомек им, буржуинам,
Что у нас, у славянинов,
Есть лихой, неповторимый
свой оригинальный стиль.
А вдобавок надо помнить,
Что писать программу нужно
Так, чтоб в ней не разобрался
Ни один, кроме тебя
И тогда везде и всюду
тебя будут уважать !


 
MsGuns ©   (2007-11-14 23:21) [74]

Если в прогу, что ваяешь, положил контроль с палитры,
А он, сволочь, не тем цветом отражает цифру "5"
Ты не парься с всяким хелпом, и не гробь свое здоровье
на исследованье всяких там событиев и свойств
Просто смело набираешь в гугле ключевое слово-поиск
И качаешь-инсталляешь сразу нужный компАнент,
Ну а если с гуглом глухо, типа вышла с ним заминка
Или как набрать не знаешь или прочий инцидент
Ни секунды на раздумья - сразу рулишь в дельфимастер
Там таких как ты навалом,- что-нибудь да подадут


 
MsGuns ©   (2007-11-14 23:30) [75]

Приступая к разработке приложения на Делфи
Убедись, что у тебя: задуаленный процессор,
2 гектара меморухи и адаптер Radeon,
20-ти дюймовый моник, крутой видеорежим
Проектируя межмордье, не стесняйся площадями
Максимально ты используй все пространство на экране.
Ну а если у клиента твоя прога не фурычит
Типа кнопок там не видно или грид ушел под стол
Ты с презреньем и свысОка погляди на неумеху
И скажи что твоя прога не для старых утюгов.


 
Юрий Зотов ©   (2007-11-15 00:23) [76]

> Leonid Troyanovsky ©   (13.11.07 14:29) [67]

Почти дословный перевод.
:о)

Заветы

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

А эксепшены гаси ты - не фиг юзеру их видеть,
Юзер должен видеть только лишь убойный твой дизайн,
И не делай инсталлятор, ламерам ведь лишь он нужен
Лучше в прогу вставь 140 русских текстовых констант.

Копипасть ты код почаще, это круто аффигенно
И не бойся, блин, на грабли в сотый раз ты наступить.

Советы

Береги, дружище, клаву - не давай имен ты длинных
Также всякие пробелы и каменты убери,
Собери юниты в кучу - сэкономишь ты на uses,
И компилер сразу скажет: это суперпрограммист!

Также лишнего не помни - на фига нам гробить память?
Пользуй with, да ведь и пачкой можно фукции юзать,
Ну а ежели деструктор ссылки все не обнуляет,
Смело разбивай ты прогу на exe и dll.

Создавай потоков кучу, не заботясь ни о чем ты,
И почаще пользуй API - это крутизна ваще!
А глобальных переменных ты своих вводи побольше -
Должен же ты переплюнуть этот дохлый VCL?

И убогие листбоксы заменяй десятком кнопок,
Создавая кнопку Button прям вот так: Button.Create,
Но пихай все это в try ты - вдруг конструктор сглючит сдуру?
И тогда ведь ты деструктор должен будешь вызывать.

А еще не хило будет в функцию засунуть try тот,
Чтобы функция вернула ею ж созданный PChar.
И потом запомни: индекс в списках юзается с единицы,
Ну а в строках этот индекс начинается с нуля.

Чтобы записи из списка удалить - используй for ты,
И начни с нуля. И знай, что это фича, а не баг.
А еще запомни, что PChar и String друг к другу
Не приводятся, собаки. Не приводятся никак.

Знай, что Record с AnsiString"ами - для файлов самый цимус!
Не рисуй в PaintBox - для этого придумана панель
И когда тебе вдруг скажут: сколько ж лет тебе, бедняга?
Ты ответь по-программистки: в годах и месяцах и днях.


 
Leonid Troyanovsky ©   (2007-11-15 06:27) [77]


> Юрий Зотов ©   (15.11.07 00:23) [76]

Дельфиада.
Распечатал, повесил на стенку.

--
Regards, LVT.



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

Текущий архив: 2007.12.16;
Скачать: CL | DM;

Наверх




Память: 0.71 MB
Время: 0.021 c
2-1195713651
eugie
2007-11-22 09:40
2007.12.16
Создание компонетов по имени класса


3-1187016660
ChaoX
2007-08-13 18:51
2007.12.16
Как заставить TDBImage понимать jpeg и


2-1195554111
Quart
2007-11-20 13:21
2007.12.16
CheckListBox


15-1195042164
de.
2007-11-14 15:09
2007.12.16
RS-422/485


15-1195034691
Кевларвестов Семен
2007-11-14 13:04
2007.12.16
Cannot Resolve Unit Name