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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.69 MB
Время: 0.079 c
15-1194730016
Leonid Troyanovsky
2007-11-11 00:26
2007.12.16
Самые распространенные дельфийские заблуждения


15-1195110851
Cyrax
2007-11-15 10:14
2007.12.16
Кодировка в pdf-файле...


3-1186983366
sergeyst
2007-08-13 09:36
2007.12.16
ошибка IB6.5


2-1195649229
{ент
2007-11-21 15:47
2007.12.16
Размер текста


15-1195375676
namco
2007-11-18 11:47
2007.12.16
текст редактор





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский