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

Вниз

По каким моментам кода вы понимаете - профи или так... ?   Найти похожие ветки 

 
Кудесник ©   (2004-12-21 10:30) [0]

сабж...


 
Игорь Шевченко ©   (2004-12-21 10:31) [1]

Опыт...


 
y-soft ©   (2004-12-21 10:32) [2]

По каким моментам текста вы отличаете классический роман от школьного сочинения? :)


 
Суслик ©   (2004-12-21 10:32) [3]

конкретный код есть всего лишь необходимое условие профи...


 
Gero ©   (2004-12-21 10:35) [4]

Новичок никогда не назовет функцию IncludeTrailingPathDelimiter.


 
Игорь Шевченко ©   (2004-12-21 10:39) [5]

Gero ©   (21.12.04 10:35) [4]

И тем более RtlActivateActivationContextUnsafeFast или
ExWaitForRundownProtectionReleaseCacheAware :)

С уважением,


 
Суслик ©   (2004-12-21 10:41) [6]


> И тем более RtlActivateActivationContextUnsafeFast или
> ExWaitForRundownProtectionReleaseCacheAware :)

Я вот, этих функций не знаю :)
Но если бы мне про них рассказал Игорь Шевченко, то я обязательно бы вставил их в свой код и тут же стал профи. :)


 
antonn ©   (2004-12-21 10:42) [7]

А если чел Лабелы обзывает так: L_CAPTION_VISION и тп?
Кстати, а как можно сменить стандартные названия компонент? Чтобы вместо Button1 было B_1.


 
y-soft ©   (2004-12-21 10:49) [8]

Разница в самом подходе к написанию приложения...

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

У хорошего профи в коде виден свой неповторимый почерк, ход мысли...


 
Sandman25 ©   (2004-12-21 10:49) [9]

[7] antonn ©   (21.12.04 10:42)

Кстати, а как можно сменить стандартные названия компонент? Чтобы вместо Button1 было B_

GExperts for Delphi. У меня кнопки сразу принимают название btN, остается только N заменить на осмысленный текст, префикс уже есть :)


 
vecna ©   (2004-12-21 11:07) [10]

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


 
y-soft ©   (2004-12-21 11:11) [11]

Неопытный программист и пишет слепо.
Код его представляет из себя коктейль из шаблонных кусков, чужих рецептов и результатов собственных эмпирических изысканий ("плясок с бубном") :)


 
Sandman25 ©   (2004-12-21 11:26) [12]

У опытного программиста меньше операторов case и нет конструкций типа:
case (Sender as TBitBtn).Tag of
 0: DoSomeThing(3);
 1: DoSomeThing(5);
 2: DoAnotherThing();
end;
Do(...);


 
Fay ©   (2004-12-21 11:29) [13]

2 Sandman25 ©   (21.12.04 11:26) [12]
Очень странное наблюдение. Мопоподробнее?


 
Johnmen ©   (2004-12-21 11:30) [14]

"Меньше кода, больше дела" (с) из баннера


 
Sandman25 ©   (2004-12-21 11:32) [15]

[13] Fay ©   (21.12.04 11:29)

Неопытные программисты не понимают, что вместо case часто эффективнее использовать полиморфизм, а вместо одного обработчика нескольких разных кнопок следует использовать несколько разных обработчиков.


 
Fay ©   (2004-12-21 11:35) [16]

2 Sandman25 ©   (21.12.04 11:32) [15]
Мне не очевидно, что
1) DoAnotherThing - метод
2) case имеет отношение с полиморфизму и кнопкам


 
Sandman25 ©   (2004-12-21 11:41) [17]

[16] Fay ©   (21.12.04 11:35)

1)Пример был не про полиморфизм, а про искусственное самоограничение на количество обработчиков. В чужом коде видел даже такой ужас:
procedure ...Click(Sender: TObject);
begin
 if Sender = Button1 then
 begin
  ...
 end
 else
 if Sender = Button2 then
 begin
  ...
 end
end;


2) Неопытные часто используют поле в качестве варианта case.


 
TUser ©   (2004-12-21 11:46) [18]


> В чужом коде видел даже такой ужас

А что тут ужасного?

По сабжу - в хорошем коде фенкции занимают не более одной печатной страницы. Все что больше - разбивается на несколько процедур/функций. Исключение м.б. сделано только для большого кол-ва однотипных строк, чего (кстати) следует избегать. Хороший код не пишется методом копи-паст (в прямом и переносном смысле).


 
Fay ©   (2004-12-21 11:47) [19]

2 Sandman25 ©   (21.12.04 11:41) [17]
Да ладно, код не очень страшный, хотя и несколько странный 8)

Я вот с превеликим презрением отношусь к коду вида
while чё-то do
 begin
   ...
   ... Нечто.FieldByName("ИмяПоля").КакаяТоФигня ... ;
   ...
 end;

Но знаю, что некоторые уважаемые мною мастера (со значками) так пишут, причём упорно. Видимо моё отношение и такому коду неявляется критерием мастерства 8)


 
Val ©   (2004-12-21 11:48) [20]

>[18] TUser ©   (21.12.04 11:46)
По поводу копи-паст - а вот та жуть, про которую написал Игорь Шевченко, обязательна к набору руками? :)


 
Sandman25 ©   (2004-12-21 11:48) [21]

[18] TUser ©   (21.12.04 11:46)

А что тут ужасного?

Следовало сделать 2 разных обработчика.


 
Val ©   (2004-12-21 11:50) [22]

>[19] Fay ©   (21.12.04 11:47)
не поясните, что вас там так смущает ?


 
Fay ©   (2004-12-21 11:50) [23]

2 Sandman25 ©   (21.12.04 11:48) [21]
IMHO, такая необходимость не совсем очевидна.


 
Sandman25 ©   (2004-12-21 11:51) [24]

[19] Fay ©   (21.12.04 11:47)

Вы про объявление переменных типа T...Field и присвоение им значений до цикла?
Или про использование persistent полей?


 
Fay ©   (2004-12-21 11:52) [25]

2 Val ©   (21.12.04 11:50) [22]
Зачем вычислять поле в цикле?


 
TUser ©   (2004-12-21 11:52) [26]


> Fay ©
> Sandman25 ©

У каждого свои причуды. Я вот тут уже несколько раз нагоняй получал за function rAny: TAnyType (типа - читаю так проперти). Что поделать, что это r мне привычнее, чем Get.


 
Sandman25 ©   (2004-12-21 11:56) [27]

[23] Fay ©   (21.12.04 11:50)

Не знаю, что и ответить. Разве что довести идею до абсурда и отказаться от всех обработчиков, всё управление программой поместив в ApplicationEvents.OnMessage.
А как же структурность?


 
Суслик ©   (2004-12-21 11:58) [28]

флейм похуже прочих


 
Val ©   (2004-12-21 11:58) [29]

>[25] Fay ©   (21.12.04 11:52)
Ну, например, я вижу - что это за поле, смотря на код. Мне не нужны статические поля - запрос создался и умер.
Можно ваш вариант и аргументы?


 
antonn ©   (2004-12-21 11:59) [30]

А чего плохово в Копипасте? Вот я "тренируюсь на левом проекте", если получается я готовый код вставляю в рабочий проект. И далее этот "левый" проект пригодится, зачем все время изобратать велосипед? Ну пару раз изобрели и хватит. ИМХО


 
Johnmen ©   (2004-12-21 12:01) [31]

>Fay ©   (21.12.04 11:52) [25]
>Зачем вычислять поле в цикле?

Это про FieldByName ?
Тогда Val ©   (21.12.04 11:58) [29]
+ если порядок полей изменился в силу каких-то причин, то переделка кода...


 
07BB:080Dh   (2004-12-21 12:01) [32]

Sandman25 ©   (21.12.04 11:41) [17]
чем вас не устроил код?


 
Sandman25 ©   (2004-12-21 12:01) [33]

[29] Val ©   (21.12.04 11:58)

var
 MyField, AnotherField: TField;
begin
 with DataSet do
 begin
   MyField := FieldByName("my_field");
   AnotherField := FieldByName("another_field");
   while not Eof do
   begin
     ...
     MyField.AsInteger := AnotherField.AsInteger + ...
     ...
   end;
 end;
end;


 
WondeRu ©   (2004-12-21 12:02) [34]

Sandman25 ©   (21.12.04 11:26) [12]
case (Sender as TBitBtn).Tag of
0: DoSomeThing(3);
1: DoSomeThing(5);
2: DoAnotherThing();
end;
Do(...);


только что сделал очень похожую конструкцию: есть 20 менюшек, которые создают 20 разных объектов, унаследованных от общего интерфейса IXXXXXInterface. Зачем мне делать 20 обработчиков, если могу создать в каждом кейсе объект IXXXXXInterface, а дальше менять параметры тока у IXXXXXInterface????


 
Fay ©   (2004-12-21 12:02) [35]

2 Val ©   (21.12.04 11:58) [29]
Так сильно хуже?
var
 fldИмяПоля : TField;
begin
 ...
 fldИмяПоля := Нечто.FieldByName("ИмяПоля");
 while чё-то do
   begin
   ...
   ... fldИмяПоля.КакаяТоФигня ... ;
   ...
 end;
 ...
end;


 
msguns ©   (2004-12-21 12:03) [36]

>Игорь Шевченко ©   (21.12.04 10:39) [5]
>И тем более RtlActivateActivationContextUnsafeFast или
ExWaitForRundownProtectionReleaseCacheAware :)

Когда-то в детстве увлекался шахматами. В секции был один орел - большой любитель мата Лаваля. И всегда его пытался поставить. Короче, считался среди нас, четырех-пятиклашек, крутым перцем. Потому что на всех турнирах выигрывал быстро и всегда.
Пока однажды оппонент не сделал первого хода E7-E5.. В общем, перец продул ту партию.. И следующую. Авторитет еще какое-то время держался, но чувак так и не перестроился... В итоге через пару месяцев из секции ушел ;))


 
Суслик ©   (2004-12-21 12:04) [37]


>  [36] msguns ©   (21.12.04 12:03)


:-))))


 
Sandman25 ©   (2004-12-21 12:07) [38]

[32] 07BB:080Dh   (21.12.04 12:01)

Тем, что он неверен с точки зрения логики и выполняется медленнее.

[34] WondeRu ©   (21.12.04 12:02)

Весь обработчик может заключаться в

ObjectsProperty[TComponent(Sender).Tag].Create,
где property ObjectsProperty[Index: Integer] read GetObjectsProperty

или еще лучше

ObjectsProperty[GetObjectIndexByComponent(Sender)].Create,

или еще лучше

ObjectByComponentFunction(Sender).Create,


 
Sandman25 ©   (2004-12-21 12:10) [39]

[34] WondeRu ©   (21.12.04 12:02)

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


 
Johnmen ©   (2004-12-21 12:10) [40]

>Fay ©   (21.12.04 12:02) [35]

А в чем фишка ? В чем глубина/хорошесть/etc ?



Страницы: 1 2 3 4 5 6 7 вся ветка

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

Наверх




Память: 0.57 MB
Время: 0.043 c
14-1104239846
syte_ser78
2004-12-28 16:17
2005.01.16
вопрос по treeview


1-1103755615
Project1
2004-12-23 01:46
2005.01.16
Задачка. Какой код правильнее и почему ?


9-1096003204
Rem
2004-09-24 09:20
2005.01.16
Перпендикуляр


14-1104003219
e-mike
2004-12-25 22:33
2005.01.16
зависаем..


1-1104137585
viola
2004-12-27 11:53
2005.01.16
ListBox -текст выделенного элемента