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

Вниз

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

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

Наверх





Память: 0.83 MB
Время: 0.049 c
3-1132002044
S@shka
2005-11-15 00:00
2006.01.15
Удаление всех хранимых процедур в БД


14-1135085051
Иксик
2005-12-20 16:24
2006.01.15
Удаленная тех. поддержка


14-1134710721
begin...end
2005-12-16 08:25
2006.01.15
С Днём рождения! 16 декабря


14-1134736827
Иксик
2005-12-16 15:40
2006.01.15
А я сегодня посадил дерево!


3-1131864905
KostR
2005-11-13 09:55
2006.01.15
Редактирование найденных данных.





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