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

Вниз

Отвечать на вопросы про иконку в трее - вредить самому себе?   Найти похожие ветки 

 
Sergey Masloff   (2005-12-18 00:15) [120]

Ну вот прекрасный образчик кода обозвали кривым ;-) А я так старался ;-)


 
Lamer@fools.ua ©   (2005-12-18 00:22) [121]

>>Sergey Masloff   (18.12.05 00:15) [120]

Приз в студию за самый крив... э-э-э... в смысле, самый прекрасный-распрекрасный код! ;o)


 
Anatoly Podgoretsky ©   (2005-12-18 00:31) [122]

Sergey Masloff   (18.12.05 00:15) [120]
Думаю как тебя словом назвать, змей точно, но мягко.


 
Sergey Masloff   (2005-12-18 00:36) [123]

Нет, ну может мне нравится так называть поля моего класса.
На самом деле пример написан специально чтобы показать что по приведенному куску кода рано делать выводы - вот и Form1 оказалась не переменной а членом класса ;-) и код стал вполне корректным. А что имена провоцирующие ну так что ж ;-) Может чтобы врагу было непонятно.

 А насчет самого прекрасного я тут в гараже обнаружил если не 20 то 15 летней давности свой код. Распечатка и 360 Кб флопик. Где я его прочел даже не спрашивай ;-) Плакал от умиления ;-) Кусок без купюр

PROGRAM INFXTOPOSTFX;
CONST
 STRINGLENGTH  = 100;
 MAXSTACK      = STRINGLENGTH;
 TERMINATOR    = ";";
 ERR_UNMATCHED_PARENTHESIS = "ERROR:UNMATCHED "(" OR ")"";
 ERR_BEFORE_OPERATOR = "ERROR: OPERATOR PRECEDED BY LEFT PARENTHESIS OR OPERATOR";
 ERR_BEFORE_IDENT = "ERROR: IDENTIFIER PRECEEDED BY IDENTIFIER OR RIGHT PARENTHESIS";
 ERR_BEFORE_LEFT_PH = "ERROR: LEFT PARENTHESIS MUST BE PRECEDED BY OPERATOR";
 ERR_BEFORE_RIGHT_PH = "ERROR: RIGHT PARENTHESIS MUST BE PRECEDED BY IDENTIFIER";

TYPE
 ELEMENTTYPE = CHAR;
 ERRORSTRING = STRING(100);
 TOKENTYPE   = (IDENTIFIER, ENDOFEXPRESSION, RIGHTPARENTHESIS, LEFTPARENTHESIS,
                ADDINGOPERATOR, MULTIPLYINGOPERATOR, EMPTY);
 ACTION      = (MOVETOPOSTFIX, PUSHONSTACK, POPTOPOSTFIX,
                POPANDPITCH, ERROR, DONE);
 INFIXRANGE  = IDENTIFIER..MULTIPLYINGOPERATOR;
 STACKRANGE  = LEFTPARENTHESIS..EMPTY;
 TABLE       = ARRAY[INFIXRANGE, STACKRANGE] OF ACTION;
 POSTFIXTYPE = RECORD
   DATA : ARRAY[1..STRINGLENGTH] OF ELEMENTTYPE;
   LENGTH : 0..STRINGLENGTH;
 END;

 STACKTYPE = RECORD
   STACKARRAY : ARRAY[1..MAXSTACK] OF ELEMENTTYPE;
   TOPOFSTACK : 0..MAXSTACK;
   UNDERFLOW : BOOLEAN;
   OVERFLOW  : BOOLEAN;
 END;

VAR
 CURRENTELEMENT    : ELEMENTTYPE;
 PREVIOUSELEMENT   : ELEMENTTYPE;
 NOERRORSFOUND     : BOOLEAN;
 EXISTSPREVELEMENT : BOOLEAN;
 ERRORMESSAGE      : ERRORSTRING;
 TRANSITIONTABLE   : TABLE;
 POSTFIX           : POSTFIXTYPE;
 OPERATORSTACK     : STACKTYPE;

 IFILE : TEXT;
 OFILE : TEXT;

PROCEDURE INITSTACK(VAR STACK : STACKTYPE);
BEGIN
 WITH STACK DO
 BEGIN
   TOPOFSTACK  := 0;
   UNDERFLOW := FALSE;
   OVERFLOW  := FALSE;
 END;
END; {OF INITSTACK}

PROCEDURE PUSH(VAR STACK : STACKTYPE; ELEMENT : ELEMENTTYPE);
BEGIN
 WITH STACK DO
   IF TOPOFSTACK = MAXSTACK THEN
     OVERFLOW := TRUE
   ELSE BEGIN
     TOPOFSTACK  := TOPOFSTACK + 1;
     STACKARRAY[TOPOFSTACK] := ELEMENT;
   END;
END; {OF PUCH}

PROCEDURE POP(VAR STACK : STACKTYPE; ELEMENT : ELEMENTTYPE);
BEGIN
 WITH STACK DO
   IF TOPOFSTACK = 0 THEN
     UNDERFLOW := TRUE
   ELSE BEGIN
     ELEMENT := STACKARRAY[TOPOFSTACK];
     TOPOFSTACK := TOPOFSTACK - 1;
   END;
END; {OF POP}

FUNCTION STACKEMPTY(STACK : STACKTYPE) : BOOLEAN;
BEGIN
 STACKEMPTY := STACK.TOPOFSTACK = 0;
END; {OF STACKEMPTY}

PROCEDURE ACCESSTOP(VAR STACK : STACKTYPE; VAR ELEMENT : ELEMENTTYPE);
BEGIN
 WITH STACK DO
   IF TOPOFSTACK = 0 THEN
     UNDERFLOW := TRUE
   ELSE
     ELEMENT := STACKARRAY[TOPOFSTACK];
END; {OF ACCESSTOP}

FUNCTION TOKEN(ELEMENT : ELEMENTTYPE) : TOKENTYPE;
BEGIN
 CASE ELEMENT OF
   "A".."Z" : TOKEN := IDENTIFIER;
   "+", "-" : TOKEN := ADDINGOPERATOR;
   "*","/"  : TOKEN := MULTIPLYINGOPERATOR;
   "("      : TOKEN := LEFTPARENTHESIS;
   ")"      : TOKEN := RIGHTPARENTHESIS;
   ";"      : TOKEN := ENDOFEXPRESSION;
 END;
END; {OF TOKEN}


 
Sergey Masloff   (2005-12-18 00:41) [124]

Да похоже не релиз... даже не компилируется... :(
Кстати это даже не Борландовский паскаль


 
Piter ©   (2005-12-18 00:45) [125]

Marser ©   (17.12.05 23:33) [116]
В чём именно? Чем конкретное название экземпляра хуже self?


ну, Marser, не ожидал от тебя :)

Смотри:

unit Unit1;

interface
...
type
TOutputForm = class(TForm)
public
  procedure HideForm;
end;

var
OutputForm: TOutputForm ;

implementation

{$R *.dfm}

{ TOutputForm }

procedure TOutputForm.HideForm;
begin
 OutputForm.Hide();
end;

end.


Все просто прекрасно. А теперь представь, что я впоследствии захотел создать вторую форму вывода, ну и пишем:

var
 SecondaryOutputForm: TOutputForm;
begin
 SecondaryOutputForm := TOutputForm.Create(nil);
 SecondaryOutputForm.HideForm;
end;


И что мы по твоему получим?

Понимаешь отличие от случая, если было бы:

procedure TOutputForm.HideForm;
begin
 Self.Hide();
end;


Это маленький пример, но демонстрирует грубейшее нарушение принципов ООП.


 
Piter ©   (2005-12-18 00:48) [126]

Marser ©   (17.12.05 23:33) [116]
Вон, Сергей Маслов(кистате, спасибо за поддержку), тоже так считает


он так не считает - смотри пример :)

jack128 ©   (17.12.05 23:58) [117]
Да. За такое действительно убивать не нужно. За такое нужно всю жизнь каленым железом пятую точку жечь


Lamer@fools.ua ©   (18.12.05 0:10) [118]
Это уж точно.


Lamer@fools.ua ©   (18.12.05 0:14) [119]
См. [117] by jack128.


Lamer@fools.ua ©   (18.12.05 0:22) [121]
Приз в студию за самый крив... э-э-э... в смысле, самый прекрасный-распрекрасный код! ;o)


А ВОТ ВЫ И ПОПАЛИСЬ :))))

Посмотрите внимательнее на пример Сергея :)))
Как он вас облапошил то? :)

Меня тоже почти удалось, я было стал писать гневную тираду, а потом присмотрелся к примеру Сергея :)))

Говорю же, Маслофф - негодяй, развел всех :) (ну кроме меня :)))


 
jack128 ©   (2005-12-18 00:55) [127]

Попался ты, Миш.  Всё прекрасно поняли прикол Сергея М. (кроме, пожалуй его тески ;) )   .   Более того в реале такой код на порядок хуже, чем классический вариант ошибки..


 
Piter ©   (2005-12-18 00:58) [128]

jack128 ©   (18.12.05 0:55) [127]

я не попадался :)

Если ты понял прикол - то чего тогда каленым железом сечь? Ну нравится человеку такие названия. Нехорошо, конечно, но так-то все правильно :)


 
Джо ©   (2005-12-18 00:59) [129]

За такие названия - ж0сткие репрессии. Даже имхо не поставлю :p


 
Lamer@fools.ua ©   (2005-12-18 01:00) [130]

>>Piter ©   (18.12.05 00:48) [126]

Никуда я (например) не попался. У класса TForm1 поле Form1 типа TLogOutputWindow, а переменная Form5 типа TForm1.

GOTO [117]  :-))


 
jack128 ©   (2005-12-18 01:05) [131]

Piter ©   (18.12.05 0:58) [128]
Ну нравится человеку такие названия. Нехорошо, конечно, но так-то все правильно :)

Не-а.  Как раз не правельно. Потому что 99% народу глядя на код
procedure TForm1.HideLogWindow;
begin
Form1.Hide();
end;  
Подумают, что этим методом скрывается текущая форма, а не какое то поле.  Если же мы говорим только о техническом аспекте, то и обычный код:

var
 Form1: TForm;

procedure TForm.HideWindow;
begin
 Form1.Hide;
end

Может быть правельным..


 
Sergey Masloff   (2005-12-18 01:08) [132]

Я кистате видел систему (немалых размеров) в базе которой все таблицы имели имена T1, T2... TN а в каждой из них поля X1, X2...XN никаких комментариев ничего разработка велась в самописной среде которая все это безобразие генерила (специально чтобы враг не догадался) соответственно во всех ХП триггерах индексах и всем все поддерживалось вобщем довольно серьезно все это выглядело.


 
Sergey Masloff   (2005-12-18 01:14) [133]

Блин, все я чувствую завязну на неделю. Кое что компилится гну паскалем. Это я все про свою археологическую находку. Можно методичку какую-нибудь написать по процедурному программированию. Тут и стеки и графы и что-то похожее на субд... И ни одного объекта ;-)


 
Marser ©   (2005-12-18 01:20) [134]


> Piter ©   (18.12.05 00:45) [125]

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

И... Наверное, признаю свою неправоту. Ламерство тут признавать нечего, я всё равно пользуюсь self. А вот то, что человек в методах класса обращается к конкретным экземплярам, это действительно ламерство. Варианта с несколькими экземплярами я не учёл.
Можно оправдаться, что необязательно создавать несколько экземпляров. Ну а если с таким "мастерством" пойти и создать? Тогда... человек получит по рукам от родной Делфи и, даст Бог, поумнеет.


 
Anatoly Podgoretsky ©   (2005-12-18 01:33) [135]

Варианта с несколькими экземплярами я не учёл.

Ну не только это, даже с одним экземпляром и динамическим созданием получит проблему.
var
 Form1: TForm1
begin
 Form1 := TForm1.Create

Приплыли и бежим в форум, а код вроде как безобидный, ошибок компиляции не будет.


 
Marser ©   (2005-12-18 01:37) [136]


> Приплыли и бежим в форум, а код вроде как безобидный, ошибок
> компиляции не будет.

Кстати, я єтот вариант в своём первом приближении(про AV, выше по странице) тоже обдумывал, но не написал.

Всё! Убедили! Раньше я за такое грозил пальчиком, теперь буду откусывать голову :-)


 
Piter ©   (2005-12-18 02:17) [137]

Marser ©   (18.12.05 1:20) [134]
Если человек пишет такое для тиражируемой формы


да неважно сколько экземпляров будет создано, тут вопрос идеологии ООП. Объект - как черный ящик, законченный элемент, неважно что внутри, но есть интерфейс взаимодействия с ним. В теории кто угодно и когда угодно может создать экземпляр черного ящика и взаимодействовать с ним согласно описанному интерфейсу.

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

P.S. На практике, конечно, не все так идеально, но надо стремиться...


 
Юрий Зотов ©   (2005-12-18 03:34) [138]

Form1 - это еще что. Тут поклиничнее был случай. Присылает мне как-то чел один свой компонент - посмотри, мол, что-то там не так. А компонент этот юзает... глобальные переменные вместо своих полей. Указываю ему на это и задаю наводящий вопрос - что будет, если я несколько твоих компонентов на форму положу?

Елы-палы, он так ничего и не понял... компонентрайтер, блин, фигов...


 
Германн ©   (2005-12-18 04:56) [139]

Юр! А вот "чел" - это не в твоём стиле, имхо.
Хотя, блин, фигов... Да еще в 03:34!
Но всё равно, не в стиле, имхо.
Про "прочее" я молчу. Тут, имхо, нужно сравнивать степень "заряженности".


 
Юрий Зотов ©   (2005-12-18 05:02) [140]

> Германн ©   (18.12.05 04:56) [139]

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


 
Германн ©   (2005-12-18 06:00) [141]

Юра! Но в реале ты не употреблял термин "чел".
А вообще понял! Я тоже употребляю, употребляю к месту и (иногда) упротребляю не к месту". :-)


 
YurikGL ©   (2005-12-18 10:54) [142]

Кстати, об ООП....
Сейчас читаю "Объектно - ориентированный анализ и проектирование" Гради Буч.... очень познавательно. Во всяком случае, гораздо более полно и основательно, чем книги именно по ООП в Delphi, которые я до этого читал. А может, мне просто не везло :)
Но опосля ее прочтения обратиться к экземпляру класса из самого класса просто невозможно.


 
Lamer@fools.ua ©   (2005-12-18 11:06) [143]

>>YurikGL ©   (18.12.05 10:54) [142]

>Но опосля ее прочтения...
... о виртуальных статических методах и конструкторах придётся забыть :o)


 
YurikGL ©   (2005-12-18 11:34) [144]


> Lamer@fools.ua ©   (18.12.05 11:06) [143]

Одно другому не мешает?


 
Lamer@fools.ua ©   (2005-12-18 11:50) [145]

>>YurikGL ©   (18.12.05 11:34) [144]

Для тех, кто в бронепоезде, рекомендую обратить внимание на смайлик в конце сообщения за номером 143.


 
Petr V. Abramov ©   (2005-12-18 19:13) [146]

> YurikGL ©
> Нужно что-бы человек держался за свое место. Это можно сделать либо
> очччень большой з.п. (а это экономически не выгодно) либо
> доверием/хорошим колллективом/интересной работой/возможность
> получения опыта от старших товарищей

 Еще свободный режим курения нужен, чтоб держался :)))


 
YurikGL ©   (2005-12-18 19:29) [147]


>  Еще свободный режим курения нужен, чтоб держался :)))

В данном случае, можно немного переплатить :)


 
paul_k ©   (2005-12-19 09:57) [148]

Nikolay M. ©   (16.12.05 17:02) [37]
Предлагаешь студента собеседовать детскими задачками на соображалку или заставить заполнить простынь психологических тестов?

ну не знаю.. предложение написать 10-к запросов вполне разумно, ИМХО
Nikolay M. ©   (16.12.05 17:02) [37]
> sql? А мне это время работать за троих? За себя, за него
> и плюс учить sql-ю? Тяжко :(

решали просто. BOL, TFM по софтине в зубы, 2 -3 обзорные лекции по продукту а дальше какая нить процедура немерянная в руки и будь любезен отрисуй как оно работает (вопросы задавать - лови меня в курилке). После чего изучи доку как она должна работать и выдай рекомендации по приведению одного к другому. Выдал? осознал? Обсудил? утвердили? - пиши.. Сдал работу - когда написал и ОПИСАЛ то что сделал. 2-3 подобные задачи и можно в бой пускать:)

Игорь Шевченко ©   (16.12.05 17:08) [38]
Игорь ну была у Шефа такая политика партии. Какая сейчас не знаю..
Браслись студенты на мало у.е.  И того взращивались.


 
paul_k ©   (2005-12-19 10:34) [149]

Rouse_ ©   (17.12.05 0:14) [46]
лучше взять одного проффесионала и пристегнуть к нему 2-х студентов. Тогда если вдруг через некое время проффесионал закапризничает, типа виллу на канарах не заработал ещё, - то эти студенты легко его заменят
Piter ©   (17.12.05 13:22) [82]
а вот и нифига. Даже с такой точки зрения, что профи всегда будет лезть куда не хочет руководитель,

Очень редко.. только если там помойка которая мешает выполнять его прямые обязанности.

DSKalugin ©   (17.12.05 16:03) [87]
надо просить писать соискателя на листочке запросы, сажайте сразу за компьютер и пусть показывает свои навыки практической работы,

От на бумаге , пусть и показывает. Где ж я 5 - 10 компуков найду? или на целий день собеседование 10-ти человек растягивать?
И что это за практические навыки, при которых  на клаве чепятая задачка решается а на листке бумаги - нет. Такой практик и даром не нужен (ИМХО!!)

> На закуску можно предложить ему пройти он-лайн
>тестирование подобно
> http://www.certifications.ru/

Как мне больше года назад соватовали тут - проще надо быть. sql-ex.ru нколько листочков с разным уровнем задач сформировано.  Когда соискатель шибко наглый попадается, садишся, перенабираешь его бред со всеми ошибками и капу жмешь.

Piter ©   (17.12.05 21:49) [108]
Ты видишь, что он не совсем понимает суть того, что делает

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


 
Игорь Шевченко ©   (2005-12-19 11:43) [150]

Piter ©   (17.12.05 13:22) [82]


> ну вот ответьте, Игорь, что вам мешало знать все это, когда
> вы только устраивались на работу?


Еще не было :) Ты про HTML в начале 80-ых слышал ? Или под стол пешком ходил ?


 
Piter ©   (2005-12-19 12:24) [151]

Игорь Шевченко ©   (19.12.05 11:43) [150]
Еще не было


а у вас на работе на HTML писали?

На работе то писали на чем-то? И как я понимаю - вы этого не знали?

Что же мешало выучить?


 
Игорь Шевченко ©   (2005-12-19 12:29) [152]

Piter ©   (19.12.05 12:24) [151]


> И как я понимаю - вы этого не знали?


Ты неправильно понимаешь. Охота пофлеймить - аська/почта/чат.


 
Piter ©   (2005-12-19 19:11) [153]

Игорь Шевченко ©   (19.12.05 12:29) [152]
Ты неправильно понимаешь. Охота пофлеймить - аська/почта/чат


Ну насчет пофлейми - тут и так флейм :)

Просто ваша фраза:

"так как его, некоторого опыта работы, у меня при приеме в далеком-далеком году практически не было"

значит, вы под опытом работы подразумеваете именно работу на фирму, коммерческое программирование.

Я думал, вы имеете в виду, что не было опыта программирования как такового.

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


 
Gero ©   (2005-12-19 21:09) [154]


> нельзя освоить программирование без практического написания
> программ.

Можно писать программы не устраиваясь на работу :)


 
Piter ©   (2005-12-19 23:44) [155]

Gero ©   (19.12.05 21:09) [154]
Можно писать программы не устраиваясь на работу :)


ну понятное дело...


 
Джо ©   (2005-12-19 23:51) [156]

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


 
Игорь Шевченко ©   (2005-12-20 12:39) [157]

Piter ©   (19.12.05 19:11) [153]


> нельзя освоить программирование без практического написания
> программ.


Можно.


 
Gero ©   (2005-12-20 13:12) [158]


> Игорь Шевченко ©   (20.12.05 12:39)
> Piter ©   (19.12.05 19:11) [153]
>
>
> > нельзя освоить программирование без практического написания
>
> > программ.
>
>
> Можно.

Вы сталикавались  с чем-то подобным?

Ведь и изобразительное искусство можно выучить, ничего не нарисовав.


 
Игорь Шевченко ©   (2005-12-20 13:36) [159]

Gero ©   (20.12.05 13:12) [158]


> Вы сталикавались  с чем-то подобным?


Да, конечно. В то время, когда компьютеры были большими и их на всех не хватало.


 
Gero ©   (2005-12-20 13:44) [160]


> Игорь Шевченко ©   (20.12.05 13:36)

А какое значение Вы вкладываете в слово «освоить»?



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

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

Наверх




Память: 0.85 MB
Время: 0.057 c
6-1127696360
Viktop
2005-09-26 04:59
2006.01.15
Монитор порта


14-1134870211
Джо
2005-12-18 04:43
2006.01.15
Хитроумный код - ваше отношение


6-1128493311
C00ler
2005-10-05 10:21
2006.01.15
Отслеживание посещаемых страниц ...


2-1134678624
aleks28
2005-12-15 23:30
2006.01.15
WebBrowser


1-1134159570
Free0n
2005-12-09 23:19
2006.01.15
Кто может и кого возникнут оригинальные идеи посоветуйте...