Форум: "Прочее";
Текущий архив: 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 переходить.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.037 c