![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
JUncle |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 6.4.2006 Где: Казань, РФ Репутация: нет Всего: 1 |
Нет. Охватывающие скобки нужно ставить всегда! Объяснение простое - тому, кто поддерживает код - будет гораздо легче вставить в блок какие-то операторы, чем сначала обрамлять в скобки, а потом... Да и от многих непоняток уберегает. 1 тоже можно отнести. --------------------
class JUncle extends Man // singleton{/*...*/} |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Можно тогда пример, в каких случаях 1 говорит сама за себя? -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
w1nd |
|
||||||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
или
или
И вообще, если о числах, то есть -N, -1, 0, 1, N. Всё, что N - выносится в константы, остальное - необязательно. -------------------- ![]() ![]() |
||||||
|
|||||||
RebornCrusader |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 18.1.2007 Где: Владивосток Репутация: 2 Всего: 6 |
Не согласен. Пожертвовав не значащими здесь деталями, приведу пример:
ИЛИ
Какой код, по-вашему читается легче? А если ещё подобных методов-сеттеров много? И всегда ли могут быть другие операторы внутри if-а? Здесь вероятность крайне мала, да и исправить быстро, т. к. строчка короткая и простая. И вообще, никакой код не должен и не может учитывать всех возможных направлений расширения. Важно, чтобы наиболее вероятные и важные из них давались относительно легко. Всего нужно в меру и к месту. --------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier" |
||||
|
|||||
JUncle |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 162 Регистрация: 6.4.2006 Где: Казань, РФ Репутация: нет Всего: 1 |
А вот таких допущений приводить не нужно. Нельзя с определенность сказать, как будут изменять код. И сопротивляться изменению он не должен. Встречный укол - вот именно, а если их много, ох икать же будет программист, если сопровождающему придется везде что нибудь добавить... Второй вариант прекрасно читается, проблем не вижу. О первый сразу спотыкаешься. А вообще - спорить мне не хочется. Эти вопросы регламентирует документ компании об оформлении искходного кода. Это сообщение отредактировал(а) JUncle - 16.6.2007, 16:59 --------------------
class JUncle extends Man // singleton{/*...*/} |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Разумеется тот, который со скобками ;) -------------------- ![]() ![]() |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
К примеру я придерживаюсь (стараюсь) "Хорошего стиля программирования" , а он гласит , что после оператора if должны быть скобки {...}. ИМХО и читать понятно, и глазу привычней
Вод! |
|||
|
||||
Stampede |
|
||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 24 Всего: 144 |
Полностью согласен с JUncle. Но рационализация (не знаю, блин, как это по-русски - rationalisation... обоснование, что ли) этой привычки у меня другая. Тут дело не в том, что кому-то когда-то может быть придется добавить операторов, и мы мол хотим облегчить им труд, с каковой целью заранее заключаем все в блок. Если бы дело было только в этом, то это как раз не было бы хорошей практикой, ибо относилось бы к категории "ранней (преждевременной) оптимизации", что не есть гуд. Основная причина, по которой я тоже всегда заключаю условную часть в блок - это стремление к минимизации граблей. Дело в том, что не практике, и особенно в стиле "шустрого программирования" (agile programing), достаточно часто приходится заниматься рефакторингом, перекидывая и перекраивая куски кода. При этом нередко одиночный стейтмент превращается во множественный и наоброт, и если полагаться на безблочную запись, то можно по невнимательности запросто сломать логику работы условия. Особенно этому способствуют закомментирывания/раскомментирывания строк. Вот смотрите:
Но тут мы в какой-то момент решаем, что может быть ширину лучше оставить без изменений, и закомментирываем соответствующую строку:
Хопа! Вот мы и наступили на грабли. Кто хочет сказать, что уж он-то точно никогда так не лажанется, пусть первый бросит в себя камень ![]() Короче, подводя черту. При виде безблочного стейтмента в условии у меня сразу возникает чувство, что где-то в тылу заложена мина замедленного действия. И пока я его не исправлю, у меня так и будет "сосать под ложечкой" ![]() А про читабельность я уж и не говорю ![]() Это сообщение отредактировал(а) Stampede - 16.6.2007, 22:44 -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
||||
|
|||||
v2v |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
Stampede, привёл очень хороший пример.
Я и сам
Что и другим рекомендую. ... Но я начинаю изучать Java переходя с С++(#) и мне не понятна следующее размещение этих самых скобок:
Помоему вот так удобней:
Почему в ява первая скобка не пишется с новой строки? И при просмотре кода проще контролировать где "потерялася" какая то скобка. |
||||||
|
|||||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
а) Java - язык этих самых скобок. ![]() б) привычка. Я поначалу тоже не мог привыкнуть к такому виду, а сейчас привык. Чаще пишу в "жабовском" стиле, но если условие многострочное - открывающая скобка у меня обязательно есть и стоит на новой строке. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
||||
|
||||
RebornCrusader |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 139 Регистрация: 18.1.2007 Где: Владивосток Репутация: 2 Всего: 6 |
Именно эту мысль я никак не мог выразить! Когда условие и выполняющийся оператор стоят в одной строке, я считаю превращение оператора в блок из одного излишним - комментировать также просто и надёжно. Но, согласен, это дело вкуса и политики организации. Однако если код организован так, что внутренний оператор не входит в одну строчку с самим условием, скобки обязательны - легко видеть границу вложенного кода. И это касается и других конструкций. Одну строчку отследить легко, перенос - уже труднее, поэтому и требуется соответствующее оформление. Имено поэтому я не могу полюбить Питон, из-за его "бесскобочной " вложенности. Главное в программе - читаемость кода. А уж скобочки добавить всегда просто. Может я зажрался, но IDEA делает это почти сама ;) На счёт скобки в отдельной строки - вредная привычка C, с которой переучиваешься за месяц, тем паче при наличии автостилизации в IDE. Корни привычки, на мой взгляд, лежат ещё в Pascal - уж там эти страшные beginы в переносить на нову строчку куда приятнее. И наконец, скобка на новой строке использовалась для комментария к функции:
В Java нужда в этом отпадает, так как есть javadoc Добавлено @ 02:29 Вот и причина разногласий ;) У каждого в глубине души свои представления о прекрасном ;) Добавлено через 10 минут и 25 секунд
(Я тоже сталкивался с таким мнением.) Потому что при правильной стилизации на этом уровне вложенности стоит заголовок соответствующего метода. Находится быстро, дело привычки. Это сообщение отредактировал(а) RebornCrusader - 17.6.2007, 02:33 --------------------
"Fais se que dois, - adviegne que peut. C'est commande au chevalier" |
||||
|
|||||
FcUK |
|
|||
Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 22.2.2007 Репутация: нет Всего: 1 |
чесно говоря..все это хорошо....но есть Code Conventions for the JavaTM Programming Language написан в далеком 1999 году + есть Maintainability Index програмы...если он больше 100 - значит код хорошый..если менше - увы...
|
|||
|
||||
niasilil |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 4.6.2007 Где: USA Репутация: 8 Всего: 9 |
гы, "Сказано пацакам в клетке выступать, значит надо в клетке. Чё выпендриваетесь? " Добавлю. Для eclipse есть очень Checkstyle плагин, который подсказывает что не так. Рекомендую. -------------------- SCJP 5.0, SCJD |
|||
|
||||
nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Документ неплохой, но там тоже далеко не все моменты проясняются. А посему, в этой теме давайте не будем спорить по поводу того, как кому удобнее и красивше код писать (это я про те же скобочки), а либо давать рекомендации по объективно хорошему стилю, либо снабжать различные "имхо" соответствующими пометками (дабы меньше запутывать начинающих). -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |