![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемые коллеги!
Используете ли Вы в своем коде конструкцию с блоком (однократным циклом)
Иногда она удобнее и лучше читается чем вариант с условиями, но, боюсь использовать, т.к. другие могут нюансов такого блока не знать, что ухудшит и читаемость и поддерживаемость кода. Ваше мнение? -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Если поддерживающий программист не понимает таких простых вещей, и если вы так о нем печетесь... Наверное тогда следует заменить все last unless $var на last if !$var (и сделать еще кучу ужасных unperlish things), а то вдруг он не поймет) -------------------- Died at Life.pl line 21 |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
Прикалываетесь ?
а иногда такие идеи продвигают на серьезном уровне - тех директор. Идеи просты: croak + eval => throw + catch do if something => if (something) { do } ну а про блоки и ласты =) вообще не говорим . причина ? - удобочитаемость. потому что с этим кодом _прийдется работать_ людям которые не знаю этих фич или не привыкли. таким вот образом ограничивают выразительность перла до уровня жавы.. как к такому относиться ? придерживаться своих идеи или подчиниться мейнстриму ? |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
sir_nuf_nuf, вот именно. Вы написали ключевую фразу про "выразительность жавы".
Я не понимаю, зачем выбирать перл, если писать в итоге на "жаве". -------------------- Died at Life.pl line 21 |
|||
|
||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
А если приходится работать с несколькими языками. Например с PERL, PHP, C++. То в этом случаи лучше использовать похожие конструкции. Т.к это будет однотипно то код получается более читаемым и вероятность совершить ошибку будет минимальна.
Например я фигурные скобки пишу каждый раз с новой строки. Как это делал в С++ for(;;) { } Стал это делать после того как прочел несколько книг по С++ авторитетных авторов. В которой они писали как правильно писать читаемый код. Весь смысл их советов и прочего сводился к одному. Делать код проще и стандартнее. Для одних и тех же операций выполнять одни и те же действия. После С++ c Perl мне было очень тяжко. Т.к это менее строгий язык и выполнить здесь одно и тоже можно множеством способов. Например после С++ с PHP было очень легко. Т.к он по своей логике очень похож на С++. В Perl мне ненравится вот такая конструкция. Получается очень уродливо. if() { operator1; } else { operator2; } Но заменить я ее ни чем не могу. Например такая конструкция не везде работает корректно () ? operator1 : operator2; А писать так if () { }else{ } Я не могу. Т.к пропадает однотипность. Это сообщение отредактировал(а) tolkien - 23.4.2008, 03:05 |
|||
|
||||
| sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
а мне вот кажется, что перловая идея о том, что РАЗНОЕ должно выглядеть ПО РАЗНОМУ правильная..
|
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Странно, вообще-то на мой взгляд нужно отталкиватся от парадигм самого программирования и его концепций в независимости от языка. А прибегать к специфичному синтаксису языка лишь в том случае когда это действительно необходимо и оправдывает себя. Или проще говоря, на мой взгляд, глупо каждый раз впихивать в одну строку набор функций и действий, лишь потому что это позволяет делать перл.
Странно, мне наоборот гораздо удобнее открывающуюся фигурную скобку писать в конце будь то if'a, for'a или названии процедуры. Тем самым при прочтении кода я понимаю, что этот блок(все что внутри фигурных скобок) относится именно к данному ифу. Кому как удобно, но когда мы пишем на русском языке, то при переходе на новую строку, все знаки припинания пишутся на предыдущей строке, а не на новой, даже если это тире или запятая. Но при этом, чтобы догнать, что print "Hello\n" if 1; аналогичен if(1) { print "Hello\n"; } или тому же if(1) { print "Hello\n"; } не нужно быть знатоком каких-то особых фич. Достаточно повнимательнее почитать тот же учебник по перлу обучающий якобы за 24 часа Это сообщение отредактировал(а) Bulat - 23.4.2008, 09:59 -------------------- менеджер по кодеврайтингу |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Используй python, зачем тогда Perl? Perl разработан для удобства решения мелких задач и крупных. На полную ясность благодаря синтаксису не претендует. Претендует Python.
Это сообщение отредактировал(а) tishaishii - 23.4.2008, 11:00 |
|||
|
||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
Средние задачи ему уже не по силам? )) |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Изначально вопрос стоял об использовании блоков. Для их использования тоже не надо быть знатоком фич. Особенностей всего две: свой lexical scope (хотя это даже сложно назвать _особенностью_) и идентичность однократно выполняемому циклу. Т.е. для работы с блоками достаточно прочитать perldoc -f my и perldoc -f last. -------------------- Died at Life.pl line 21 |
|||
|
||||
| tishaishii |
|
|||
![]() Создатель ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1262 Регистрация: 14.2.2006 Где: Москва Репутация: 4 Всего: 8 |
Я так понял, вопрос стоял про читабельность кода и о том, как можно сделать так, чтобы другой человек легко разобрался в нём. Вот python заявляет свой синтаксис таким образом. С Perl гораздо сложнее.
|
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Писать код, отталкиваясь от логики, а не от синтаксических или иных возможностей языка. Даже в той же яве, можно найти кучу примеров, когда нет необходимости в использовании блоков try-catch, хотя можно было бы. И тем более глупо все писать в перле через eval {} , если в этом нет существенной необходимости -------------------- менеджер по кодеврайтингу |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |