Форум Программирование В помощь новичкам и любителям. |
|
Цитата (Gooddy): нужно банально упомянуть то, что объекты и модули после создания нужно переименовывать. Книга о том как важно читать книги Ж-) Общих принципов нет, а 30 строк было взято произвольно - путём тупого подражания рекомендациям Фаулера. На эфнете можно аффтара касталии потроллить на эту тему. виконання програми розпочинається з того самого мiсця, де призупинилося. | ||||||
|
Чисти код! Чисти код! Чисти код! | ||||||
|
"Пустые" скобки после вызова функции/процедуры/метода - нонсенс! Ибо, такую возможность в Delphi ввели относительно недавно (как фичу!) и то - только для того лишь, чтобы легко "поедать" вытесняемый Си-шный код с минимальными накладными расходами (мол, раз уж так заведено в этих "кривых" (читай Си-шных) языках, пусть так, или почти так и переносится - с минимальными телодвижениями). Но вставлять пустые скобки самому, намеренно... Извините, - это повод для немедленного увольнения! (в среде ортодоксальных Паскалистов!) Чтобы долго не доказывать справедливость первого утверждения - предлагаю посмотреть исходники в той же Delphi. | ||||||
|
Цитата (Gooddy): Можно поподробнее? Ник Vibes, но без фанатизма, у него @. Но настоящий ФГМ не у него, а у лида Delphi Prism, который там же :-) Цитата (meligo): Пустые" скобки после вызова функции/процедуры/метода - нонсенс! Цитата (meligo): только для того лишь, чтобы легко "поедать" вытесняемый Си-шный код Не согласен. Суть предложения в том, чтобы визуально можно было отличить символы подпрограмм от прочих. Идея в принципе неплохая, но неконсистентая, потому что: ReadLn(); {syntax error}и кодить в таком стиле не получится. виконання програми розпочинається з того самого мiсця, де призупинилося. | ||||||
|
Кстати, всегда интересовало, почему не разрешают писать ReadLn() и WriteLn()? Чисти код! Чисти код! Чисти код! | ||||||
|
Цитата (Gooddy): Кстати, всегда интересовало, почему не разрешают писать ReadLn() и WriteLn()? Вообще, думаю, что этот вопрос к авторам компилятора. Это, как бы, не процедуры, а операторы внутри компилятора. В модуле System.pas ты их не найдёшь. Цитата: unit System; { Predefined constants, types, procedures, } { and functions (such as True, Integer, or } { Writeln) do not have actual declarations.} { Instead they are built into the compiler } { and are treated as if they were declared } { at the beginning of the System unit. } Вот такие дела. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! | ||||||
|
Цитата (Gooddy): Кстати, всегда интересовало, почему не разрешают писать ReadLn() и WriteLn()? Это супротив стандарта же виконання програми розпочинається з того самого мiсця, де призупинилося. | ||||||
|
Китайский код Под китайским кодом подразумевается обычно лобовое решение, ненависть к массивам и циклам и вобщем-то пренебрежение современными технологиями. Например язык поддерживает конструкцию, позволяющую реализовать нужное действие в одну строчку кода. В китайском стиле это бы заняло все 10 строк. Несмотря на то, что китайский код обычно пишут из-за незнания, в некоторых случаях он может быть немного быстрее. I. Циклы. Думаю я немного утрирую, но предположим имеется такой китайский код: begin if i=1 then begin doSomething; end else if i=2 then begin doSomething; doSomething; end else if i=3 then begin doSomething; doSomething; doSomething; end; end; Насколько же просто его привести в божеский вид: for j:=1 to i do doSomething; Код стал не только короче, но и понятнее (для знакомых с циклом for программистов). Выводы: 1. Не стоит использовать многократные копии действий, например proc1(); proc1(); proc1(); Используйте цикл. 2. Изучайте конструкции языка и методы их применения до того как начинаете программировать. Это позволит использовать нужные конструкции в нужных местах. (хотя стоит заметить, что замена if-else-if на case (в примере) не особо хороший шаг) 3. Не используйте сложные структуры кода с большой вложенностью - это только запутает и вас и тех, кто будет читать код. Если использование таких структур необходимо - выделяйте в них смысловые блоки и разделяйте на отдельные процедуры. II. Массивы. Никогда не следует забывать, что вместо переменных вида x0, x1, x2, x3 нужно завести массив x и обращаться к каждому значению по x[i]. Это позволит обратиться к нужному значению даже если оно не известно заранее быстро и просто. Вот пример: int a0 = 0; int a1 = 0; int a2 = 0; int a3 = 0; int a4 = 0; int a5 = 0; int a6 = 0; int a7 = 0; int a8 = 0; int a9 = 0; z = superFunction(); x = getIndex(z); if (x==0) a0 = 5; if (x==1) a1 = 5; if (x==2) a2 = 5; if (x==3) a3 = 5; if (x==4) a4 = 5; if (x==5) a5 = 5; if (x==6) a6 = 5; if (x==7) a7 = 5; if (x==8) a8 = 5; if (x==9) a9 = 5; (Хорошо бы и тут сделать if-else, но всё упрощается намного дальше) Вот как изменить этот код, чтобы без потери функциональности получить тот же результат: int a[10] = {0}; z = superFunction(); x = getIndex(z); a[x] = 5; Вывод 1. Массивы реально могут упростить программирование, когда необходимо большое количество однотипных переменных, предназначенных для одной цели. 2. Заполнять массивы следует при объявлении или в цикле for. 3. Благодаря массивам можно динамически обращаться к определённой "переменной" (ячейке массива) парой-тройкой символов. III. Множественные условия (снова копипаст) Возьмём для примера такой код: if (a=1) or (a=2) or (a=3) or (a=4) or (a=5) then ... Он занимает много места, не сразу можно понять в чём суть. Заменим его на такой: if (a>=1) and (a<=5) then ... Или даже на такой (в других языках (не Дельфи) конструкции на проверку вхождения в множество и создания множества в виде диапазона значений могут отсутствовать (AS2), а могут быть несколько более продвинутыми (Python)): if a in [1..5] then ... Выводы 1. Код с использованием небольшого числа условий будет короче и понятнее. 2. Если же условие сложное по своей сути и упростить его нельзя - используйте возможности для создания абстракции. Например if (x1=x2) or (y1=y2) then ... можно заменить на if isLine(x1,y1,x2,y2) then ...(хотя в данном случае условие довольно простое). Чисти код! Чисти код! Чисти код! | ||||||
|
2 Gooddy: Сам придумал? Мощно! Многого я тут не знал. Сохранил себе на твёрдый диск. Буду пользоваться! Спасибо!!!111 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! | ||||||
|
Ты бы лучше вместо писания очевидных вещей заглянул в соседний тред, где перфекционисты требуются. виконання програми розпочинається з того самого мiсця, де призупинилося. | ||||||
Перейти в раздел:
© 2004 - 2024, Delphi.int.ru |
Версия форума: 1.10 (19.01.2010) |
Выполнено за 0.03 сек. |