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

Вниз

ищу программу которая стилизует исходный код   Найти похожие ветки 

 
TUser ©   (2010-03-23 19:04) [80]


> Игорь Шевченко ©   (23.03.10 18:59) [78]

Убедили, буду писать так.


 
Игорь Шевченко ©   (2010-03-23 19:06) [81]

TUser ©   (23.03.10 19:04) [80]

"Ты пиши, пиши, пиши,
Сочиняй весь век,
Потому что пародист -
Тоже человек.

Он не хочет затянуть
Туже поясок.
Для него твои стихи -
Хлебушка кусок.

Ты пиши и мой призыв
Не сочти за лесть,
Потому что пародист
Тоже хочет есть!"

Александр Иванов


 
Anatoly Podgoretsky ©   (2010-03-23 19:10) [82]

> Jeer  (23.03.2010 16:25:52)  [52]

Наш кадр!


 
ProgRAMmer Dimonych ©   (2010-03-23 19:14) [83]

> [77] TUser ©   (23.03.10 18:56)
> while Result <> nil do
> with Result do
> if ShowHint then
>   break
>   else Result := Parent;
>
> // :)

Голосование проводить не будем, но, думается мне, всё же если уж одно пишется в строку (else Result:=Parent), то и другое тоже в строку гнать. Из соображений единства.

while Result <> nil do
 with Result do
   if ShowHint then break else Result := Parent;


Или наоборот: каждый с новой строки:

while Result <> nil do
 with Result do
   if ShowHint then
     break
   else
     Result := Parent;


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

while Result <> nil do
 with Result do
   if ShowHint then break
               else Result := Parent;


С точки зрения отступов логики нет никакой, но блоки then и else начинаются по одной границе (подчёркиваем их равноправие в смысле уровня вложенности в дереве кода). При этом, по-прежнему, не разрываются операторные блоки.

=====

Хотя в этом случае есть не менее красивое решение:

while Result <> nil do
 with Result do
 begin
   if ShowHint then break;
   Result := Parent;
 end;


Появление begin-end погоды не сделает, а с читаемостью этого конкретного фрагмента кода станет попроще.

Или вариант, который я сам часто использую. Такой "if с аппендицитом".

while Result <> nil do
 with Result do
   if not(ShowHint) then Result:=Parent else break;


К else break привыкнуть не особенно сложно, а при просмотре кода этот кусочек кода уже не отвлекает от основной логики программы. Этакий "ненужный аппендикс".


 
Игорь Шевченко ©   (2010-03-23 20:17) [84]


> Голосование проводить не будем


Каждый пишет, как он хочет. Если нет корпоративных стандартов. Если они есть, каждый тоже может писать, как он хочет. Но недолго.


 
Кто б сомневался ©   (2010-03-23 20:22) [85]

Насчет писать в одну строку, тут надо руководствоваться здравомыслием.
Но, там где отладка не нужна, (break, exit, contrinue) - т.к. без нее видно куда пойдет трасса.
CodeGear тоже так делают , не раз встречал.

if A> B then break; (или exit\abort итп) - часто так делаю.

А вот такое
if not(ShowHint) then Result:= Parent else break;

Понятно что так только нубы (новички) пишут. С отладкой здесь будут большие проблемы


 
TUser ©   (2010-03-23 20:53) [86]


> С отладкой здесь будут большие проблемы

С другой стороны, если уверен на 99,9%, что проблем с отладкой именно в этом месте не будет, то в чем трудность? А если вдруг очень захочется (что вряд ли), то и лишний энтер вставить не долго.


 
ProgRAMmer Dimonych ©   (2010-03-23 20:58) [87]

> Насчет писать в одну строку, тут надо руководствоваться
> здравомыслием.

Золотые слова. Именно поэтому:
>если суть выполняемого действия очевидна и читается из контекста


> Понятно что так только нубы (новички) пишут. С отладкой
> здесь будут большие проблемы

Разве что с точки зрения пошагового выполнения. Код, поверх которого пришлось мастерить этот пример, не самый удачный случай применения этого приёма. Хотя бы из-за того, что используется with. Скажу по секрету, я даже в какой-то момент вообще упустил его из виду и подумал было, что цикл имеет шанс бесконечно выполняться, т.к. Parent, вроде бы нигде не меняется. К тому же, постоянную проверку ShowHint из цикла в том конкретном случае вообще лучше вынести наружу. Если же в такой if много логики не вкладывается, то свернуть в одну строку, чтобы перед глазами не путалось, вполне можно.

i:=0;
while i<100 do
 if VasyaPupkinStillAlive[i] then Inc(i) else break;


В такой кусок кода достаточно вникнуть 1 раз, чтобы сложилось "Ага, ищем первого убитого Василия Пупкина". Операция несложная, напороть в ней ошибок может "только нуб". Поэтому при последующем разборе кода на такой "свёрнутый" кусок программы можно просто не обращать внимания, принимая к сведению лишь выполняемые ею действия (рассмотренные при первом проходе). Человек - он не по буквам читает, а слово целиком, так что память это ничуть не загружает.

Хотя, конечно, приём далеко не для повсеместного использования.


 
Anatoly Podgoretsky ©   (2010-03-23 21:09) [88]

> ProgRAMmer Dimonych  (23.03.2010 20:58:27)  [87]

> Человек - он не по буквам читает, а слово целиком

Учись читать по странично


 
ProgRAMmer Dimonych ©   (2010-03-23 21:21) [89]

> [88] Anatoly Podgoretsky ©   (23.03.10 21:09)
> Учись читать по странично

Хотите об этом поговорить?

При чтении текста заучивания наизусть не происходит (ну, разве что кроме очень запущенных случаев). Посему слова пропускаются через т.н. кратковременную память. Имеющую ограниченную ёмкость. «Волшебное число 7±2» сие называлось, в исполнении Джорджа Миллера. Реально - от 3 до 7 в завимости от тренированности памяти. Это касательно того, сколько различных однородных объектов может удержать человек в кратковременной памяти без многократного повторения. Слов, например...

В приведённом примере 6-7 понятий более чем достаточно, чтобы уловить смысл:

Если Васяжив, То Увеличить, Иначе "Бряк"

Более того, т.к. конструкция шаблонная, знакомая до начала прочтения, то реально можно цельно воспринять и несколько более сложную конструкцию.

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

А речь ведь шла только о том, чтобы не читать побуквенно.


 
Игорь Шевченко ©   (2010-03-23 21:25) [90]

ProgRAMmer Dimonych ©   (23.03.10 21:21) [89]

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


> При чтении текста заучивания наизусть не происходит (ну,
>  разве что кроме очень запущенных случаев).


Ты код учишь наизусть ?


 
ProgRAMmer Dimonych ©   (2010-03-23 21:34) [91]

> [90] Игорь Шевченко ©   (23.03.10 21:25)


> Я код по словам не читаю. Ну то есть совсем. Я, если так
> можно сказать, читаю конструкциями.

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


> И для подобного чтения стиль довольно важен, так как на
> непривычном стиле чтение спотыкается.

Вижу неприятное противоречие.

> Каждый пишет, как он хочет. Если нет корпоративных стандартов.

Получается, когда стандарт диктует непривычный стиль, то чтение будет спотыкаться. Так что это, увы, бывает и приходится мириться. Если брать ныне обсасываемый приём, то здесь действительно можно спотыкаться с непривычки. При повальном применении где ни попадя. В остальных случаях это будет ощущение из разряда "вроде всё как обычно, но почему-то чувствую, что этот код не мною писан".


> > При чтении текста заучивания наизусть не происходит (ну,
> > разве что кроме очень запущенных случаев).
> Ты код учишь наизусть ?

Хде это я такое написал?


 
Кто б сомневался ©   (2010-03-23 21:41) [92]


> TUser ©   (23.03.10 20:53) [86]
>
>
> > С отладкой здесь будут большие проблемы
>
> С другой стороны, если уверен на 99,9%, что проблем с отладкой
> именно в этом месте не будет, то в чем трудность? А если
> вдруг очень захочется (что вряд ли), то и лишний энтер вставить
> не долго.


Ты не понял. Дело не в логической ошибке.
А к примеру нужно просмотреть переменную на этом этапе.


 
ProgRAMmer Dimonych ©   (2010-03-23 21:44) [93]

> [92] Кто б сомневался ©   (23.03.10 21:41)


> TUser ©   (23.03.10 20:53) [86]
> если уверен на 99,9%, что проблем с отладкой
> именно в этом месте не будет


Никто не заставляет пользоваться этим на каждом шагу.


 
Игорь Шевченко ©   (2010-03-23 21:54) [94]

ProgRAMmer Dimonych ©   (23.03.10 21:34) [91]


> Достаточно только правильно провести параллель между текстом
> на естественном языке и текстом программы. И там, и там
> речь будет идти о цельновоспринимаемых элементах.


Не надо проводить такие параллели, совершенно разные вещи.


> Вижу неприятное противоречие.


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

Поэтому я не зря прошу кандидатов на работу присылать исходники - из неестественного языка очень много можно извлечь :)


 
Leonid Troyanovsky ©   (2010-03-23 22:04) [95]


> ProgRAMmer Dimonych ©   (23.03.10 19:14) [83]

> Хотя в этом случае есть не менее красивое решение:
>
> while Result <> nil do
>  with Result do
>  begin
>    if ShowHint then break;
>    Result := Parent;
>  end;


while Result <> nil do
 with Result do
    begin
       if ShowHint then
         break
       else
         begin
           DoSomethingAlso;
           Exit;
         end;
       Result := Parent;
    end;

--
Regards, LVT.


 
ProgRAMmer Dimonych ©   (2010-03-23 22:12) [96]

> [94] Игорь Шевченко ©   (23.03.10 21:54)
> Не надо проводить такие параллели, совершенно разные вещи.

А нейроны-то и не знают.


> Противоречий никаких нет, я (например) не могу никаким образом
> повлиять на стиль написания кода хотя бы присутствующих
> в этой ветке. Поэтому каждый пишет, как он хочет. А вот
> удобно ли мне их написанное читать - про это я не говорил.
>
> Поэтому я не зря прошу кандидатов на работу присылать исходники
> - из неестественного языка очень много можно извлечь :)

Это понятно. Просто есть ведь случаи, когда просто идёт условно-опасное сворачивание кода, - тогда надо просто следить за тем, чтобы это было в меру, IMHO. А есть случаи, когда имеется (никого из присутствующих не хочу задеть) код, демонстрирующий недостаточное осознание идей, лежащих в основе синтаксиса. Это немного о разном, как мне кажется.


 
ProgRAMmer Dimonych ©   (2010-03-23 22:15) [97]

> [95] Leonid Troyanovsky ©   (23.03.10 22:04)

Эм-м-м... Шутка? Result := Parent не выполнится ведь, кажется...


 
Игорь Шевченко ©   (2010-03-23 22:17) [98]

ProgRAMmer Dimonych ©   (23.03.10 22:12) [96]


> А нейроны-то и не знают.


Нейроны и не читают текст программы как текст на естественном языке.


> Просто есть ведь случаи, когда просто идёт условно-опасное
> сворачивание кода


Еще что-то успели объявить considered harmful, а я пропустил ?


> А есть случаи, когда имеется (никого из присутствующих не
> хочу задеть) код, демонстрирующий недостаточное осознание
> идей, лежащих в основе синтаксиса


А если зайти в "Начинающие", там столько случаев, демонстрирующих...


 
Leonid Troyanovsky ©   (2010-03-23 22:21) [99]


> Leonid Troyanovsky ©   (23.03.10 22:04) [95]

Ну, это в смысле 2 пробелов, бо правила передачи оных форумом
я до сих пор не заучил.

Т.е., надеюсь, что основную мысль передал:
блоки размещаем также, как и одиночные операторы,
(+  учет уровня begin-end).

Хотя, сразу проявляется эстетический косяк if,
бо ему не хватает endif.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2010-03-23 22:29) [100]


> ProgRAMmer Dimonych ©   (23.03.10 22:15) [97]

А в чем сомнения? Вроде бы, двоеточия нет.

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

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2010-03-23 22:34) [101]


> Leonid Troyanovsky ©   (23.03.10 22:29) [100]
>
> > ProgRAMmer Dimonych ©   (23.03.10 22:15) [97]

А.., понял-понял. Где Break, там и Exit ;)
Думал лишь про иллюстрацию.
Sorry.

--
Regards, LVT.


 
ProgRAMmer Dimonych ©   (2010-03-23 22:46) [102]

> [99] Leonid Troyanovsky ©   (23.03.10 22:21)
> Т.е., надеюсь, что основную мысль передал:
> блоки размещаем также, как и одиночные операторы,
> (+  учет уровня begin-end).
>
> Хотя, сразу проявляется эстетический косяк if,
> бо ему не хватает endif.

Ну, переучиваться-то уж точно неприятно будет, если надумаются добавить. :)

Кстати, если уж об отступах, то здесь предпочитаю begin-end отдельно не сносить. Чтобы само содержимое составного блока не уподоблять операторным скобкам. Т.е. фактически отступу у меня обычно подвергаются только простые операторы, входящие в составной, но не сам составной. Из плюсов лично для меня (т.е. IMHO) даёт то, что программа не уезжает далеко вправо. Хотя при правильном разбиении на процедуры/модули это и некритично.

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


 
Германн ©   (2010-03-23 23:00) [103]


> Ну, переучиваться-то уж точно неприятно будет, если надумаются
> добавить. :)
>

Ничего подобного! Мне пары дней хватило, чтобы привыкнуть. :)


 
ProgRAMmer Dimonych ©   (2010-03-23 23:12) [104]

> [103] Германн ©   (23.03.10 23:00)

Я не в теме :(


 
Leonid Troyanovsky ©   (2010-03-23 23:25) [105]


> ProgRAMmer Dimonych ©   (23.03.10 22:46) [102]

> и в пользу предложенного Вами варианта. Познание альтернативы
> ещё никому не вредило,

На особые аргументы сослаться не могу.

Лет несколько назад за написанием мной кода наблюдал один уважаемый
(мной) сишник и обратил мое внимание на несогласованность написания некторых языковых конструкций.

Проанализировав оные замечания я вывел, IMHO, более подходящие
мне формулы. Например, что составные начнинаются begin именно там,
где простые просто начинаются.
Правила же, на самом деле, очень просты.

Хотя, они и не всегда соответствуют пожеланиям, скажем C.Calvert,
хотя я его сильно уважаю.

И еще.
Не помню, кто первый это отметил, но более важным является
не применяемое правило, а пунктуальность в его применении.
Бо, я легко читаю коды by C.Calvert or P.Below, хотя они и отличны
от моего написания.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2010-03-23 23:36) [106]


> ProgRAMmer Dimonych ©   (23.03.10 22:46) [102]

> для меня (т.е. IMHO) даёт то, что программа не уезжает далеко
> вправо. Хотя при правильном разбиении на процедуры/модули
> это и некритично.

Если уезжает далеко  и я не могу оное исправить известными
мне легальными способами, то я начинаю думать  об
ошибке поектирования.

- Что-то не сложилось, подумал Штирлиц...

--
Regards, LVT.


 
ProgRAMmer Dimonych ©   (2010-03-23 23:48) [107]

> [106] Leonid Troyanovsky ©   (23.03.10 23:36)
> Если уезжает далеко  и я не могу оное исправить известными
> мне легальными способами, то я начинаю думать  об
> ошибке поектирования.

Ну вот как раз это я и имел в виду, когда упоминал про процедуры/модули.


 
Германн ©   (2010-03-23 23:55) [108]


> ProgRAMmer Dimonych ©   (23.03.10 23:12) [104]
>
> > [103] Германн ©   (23.03.10 23:00)
>
> Я не в теме :(
>

http://www.3s-software.com/index.shtml?ru_ru_ST


 
Leonid Troyanovsky ©   (2010-03-24 00:06) [109]


> ProgRAMmer Dimonych ©   (23.03.10 23:48) [107]

> > ошибке поектирования.

> Ну вот как раз это я и имел в виду, когда упоминал про процедуры/модули.

Вот этот феномен любопытен.
Никто же не препятствует передвинуть Right Margin на пару символов.
И нынешние мониторы это позволят.

Но, делать это западло, бо предыдущее поколение как-то умудрилось :)

--
Regards, LVT.


 
ProgRAMmer Dimonych ©   (2010-03-24 00:06) [110]

> [108] Германн ©   (23.03.10 23:55)

Теперь понял. Интересная идея.


 
Игорь Шевченко ©   (2010-03-24 00:45) [111]


> Но, делать это западло, бо предыдущее поколение как-то умудрилось
> :)


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


 
Petr V. Abramov ©   (2010-03-24 01:31) [112]


> Игорь Шевченко ©   (24.03.10 00:45) [111]
>
>

да эти ваши шедевры на первом курсе проходят
:)))


 
Eraser ©   (2010-03-24 02:07) [113]

в таких спорах мне всегда интересно кто как конструкцию case of else пишет ;-)


 
Германн ©   (2010-03-24 02:24) [114]


> Petr V. Abramov ©   (24.03.10 01:31) [112]
>
>
> > Игорь Шевченко ©   (24.03.10 00:45) [111]
> >
> >
>
> да эти ваши шедевры на первом курсе проходят

Заметь, Петя, что написание этих шедевров стоило многих поклонов к "перфораторщицам", плюс многих очередей не только на "алфавитно-цифровой, но и на обычную ЕС с той самой колодой. И плюс пришлось многим изучить язык дырочек на перфокартах. Ибо опечатки девочек-перфораторщиц стоили очень дорого! Ибо время - самое дорогое!
:)


 
Германн ©   (2010-03-24 02:32) [115]


> Eraser ©   (24.03.10 02:07) [113]

case I of
 1 : begin
   sms;
   sms;
 end;
 2 : sms;
else
 sms;
end;

Мой вариант.


 
Германн ©   (2010-03-24 02:35) [116]


> Германн ©   (24.03.10 02:32) [115]

Я как и LVT до сих пор не могу освоить количество пробелов в постах на ДМ. Прошу в моём примере считать каждый пробел за два.


 
Германн ©   (2010-03-24 02:54) [117]


> Германн ©   (24.03.10 02:32) [115]

Расширенный вариант:
case sms of
   1 : begin
       sms;
       sms;
   end;
   2 : if sms then begin
       sms;
       sms;
   end;
   3 : if sms then sms;
   4 : sms;
else [begin]
   sms;
   {sms;
end;]


 
Германн ©   (2010-03-24 02:57) [118]


> Германн ©   (24.03.10 02:54) [117]

Читать так:
case sms of
  1 : begin
      sms;
      sms;
  end;
  2 : if sms then begin
      sms;
      sms;
  end;
  3 : if sms then sms;
  4 : sms;
else [begin]
  sms;
  [sms;]
end;


 
Anatoly Podgoretsky ©   (2010-03-24 09:07) [119]

> ProgRAMmer Dimonych  (23.03.2010 22:46:42)  [102]

Ничего неприятного и сложного при введение именованых END. А вот количество ошибок уменьшит. Вирт был весьма не последователен с понятием ОПЕРАТОР, то у него они однострочные, то многострочные.


 
Anatoly Podgoretsky ©   (2010-03-24 09:09) [120]

> Игорь Шевченко  (24.03.2010 00:45:51)  [111]

Если тебя заставить сначала на бумаге отлаживать программу, то ты тоже станешь генеем.



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

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.71 MB
Время: 0.067 c
2-1270572897
alla4ka
2010-04-06 20:54
2010.08.27
массив+файл


15-1265063407
Юрий
2010-02-02 01:30
2010.08.27
С днем рождения ! 2 февраля 2010 вторник


15-1273509185
stas
2010-05-10 20:33
2010.08.27
Рантайм пакеты


15-1268978113
oldman
2010-03-19 08:55
2010.08.27
Драйвер для Xerox Phaser 3117 под МЕ


2-1270543077
Александр Чернявский
2010-04-06 12:37
2010.08.27
Вопрос к компоненте TImage





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