![]() |
|
Модераторы: THandle, bems |
![]()
|
|
| THandle |
|
||||||||||||||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Всем привет.
Уж не знаю, так или нет это называется, но Delphi наш не регистрочувствителен, что меня в последнее время честно говоря стало огорчать. Причины моего огорчения в следующем, объясню все на сусликах. 1. Ключевые слова и оформление кода. Раньше я оформлял код жутким образом(отступы, несохранение регистра написания переменных в коде и тд.). Сейчас более менее начал соблюдать правила, в большинстве своем описанные в следующей статье: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=802 А теперь рассмотрим объявление примитивного класса:
Как вам такой код? Хорошо читается? Пусть даже отступы не будем брать в расчет:
Все равно код смотрится жутко, ИМХО. Возьмем класс на C#:
Тут никогда не получится написать что то типа:
Просто недопуститься компилятором. А что мы видим в Delphi? Новички(да и некоторые вполне опытные люди) приходят и начинают писать код вроде нашего суслика, и многие потом не могут отучиться от такой привычки. 2. Теперь немного об именовании переменных. Имеем переменные:
А теперь как же к ним обращаются люди? Да хоть как!!!
В case-sesitive языках переменные mYSUpERPUPeRSusleG и mysuperpupersusleg были бы уже совсем разными вещами. Единственное что мне нравится у нас в этом деле, это то что нельзя объявить несколько переменных с одним именем, но в разном регистре. То есть:
Все катит и работает отлично. Две разные переменные. А в Delphi так низя, будет ругаться:
Delphi уже матерится Лично мое мнение насчет всего этого безобразия: Было бы лучше, если бы Pascal, Object Pascal были бы регистрозависимыми языками, с вложенным в компилятор правильным оформлением ключевых слов, без возможности обращаться к переменной "как хочетсЯ", "Как напИсалось". Но в то же время хотелось бы чтобы нельзя было объявлять переменные с одинаковыми с точки зрения прочтения переменными. Вот. А теперь вопрос. Каково Ваше мнение по этому поводу? ЗЫ: сорри, написал как то не очень хорошо. Не в лучшем сейчас расположении духов |
||||||||||||||||
|
|||||||||||||||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: нет Всего: 54 |
Имхо согласен, регистрозависимость нужна. Самого часто бесит, что переменные и функции пишутся без какой-то определенной специфики.
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
Я вот тож мучался и думал как правильно написать процедуру или функцию...
Потом узнал про Ctrl + Space... и щас всегда это нажимаю... даже если текст уже полностью мной набран... то есть я пишу ваще без больших букв... а в конце (или в середине ввода) жму эту комбинацию и все делаеься как надо... В связи с этим бесит одна штука... например тип Integer по умочанию так пишется, а string - так... почему все в дельфе с большой буквы, а стринг - с маленькой? Меня это немного выводит из равновесия... а переменные так называю: MainForm или Main_form... ну и отступы, конечно, делаю... но тут уж, как сам считаю правильным... вроде привык уже и сейчас меня не бесит внешний вид того, что я напечатал... |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Kbl4AH, ключевые слова в Delphi все идут с маленькой буквы, если не ошибаюсь
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
||||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
||||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
заметно! но в сплывающей подсказке и у того и у того название - type... мне в принципе без разницы, но немного не нравится... ![]() Одинаково, так одинаково, а не то что с большой, с маленькой, всеми большими... А почему string единственный из типов является ключевым словом? Так исторически сложилось? Это сообщение отредактировал(а) Kbl4AH - 23.1.2009, 11:30 |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
Еще пара вопросов по правилам хорошего стиля оформления...
1) В редакторе кода в правой части экрана проходит вертикальная линия... Можно ли чтобы код выходил за нее или это считается не приемлемым? 2) Как правильно написать такой код?
|
|||
|
||||
| Rrader |
|
|||
|
Inspired =) ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: нет Всего: 191 |
Не рекомендуется. При печати потеряется.
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
Спасибо, буду теперь так делать... а то раньше делал так:
|
|||
|
||||
| Qu1nt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 602 Регистрация: 13.1.2007 Репутация: нет Всего: 50 |
Нет такого понятия "правильно". У каждой уважающей себя фирмы есть некие стандарты оформления кода. Кушать захочешь - к ним приспособишься.
Регистронезавиcимость Delphi делает его еще более понятным для новичков. Если сейчас что-то изменить, то огромное количество компонентов, исходных кодов станут неработоспособными. А проводить аналогии с другими языками - неуместно. |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Эх THandle, слышишь ты звон...
Начинаю с Modula языки Вирта стали регистрозависимыми, а ключевые слова пишутся CAPS'ом. Потом ещё были и Modula-2, и Oberon, и Oberon-2... При этом каждый раз язык всё худел и худел. А Borland, наоборот всё раздувает и раздувает. Очень простая реализация модульности и межмудольного импорта/экспорта. И исчо много чего. Вообщем попробуй Component Pascal. Мне понравилось...
-------------------- |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
наоборот Добавлено через 1 минуту и 38 секунд так же красивее
|
||||
|
|||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
||||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
ну и ладно
|
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
||||
|
||||
| Akella |
|
||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
там где "правильно" эти три строки end else begin ваще не смотряться, зачем три ,если можно и красивее одной строкой Кстати автор пишет правильно/неправильно. Ну и толку с того. А я пишу, что наоборот, так правильно: и значительно читабельнее
а те лишние строки только в глазах маячат бестолку Добавлено @ 20:05 Почему так неправильно? Потому что автор той статьи так написал?
Добавлено @ 20:06 Нужно кагбэ "обрамить" исполняемый блок
Это сообщение отредактировал(а) Akella - 28.2.2009, 20:08 |
||||||||
|
|||||||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Akella, мне лично так не удобно.
Основная причина: Когда много begin..end'ов то при записи, которую я использую СРАЗУ четко видно какой end за какой begin отвечает. Добавлено через 1 минуту и 54 секунды Вообще религия у всех разная. Но у нас правильнее |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
в моём случае прекрасно видно, что end относиться или к if, или к else
а ещё меня учили
только код растягивается Добавлено через 54 секунды THandle, а ты видел в разделе для новичков у кого-то код был "лесенкой"? Красиво, но абсолютно нечетабельно |
||||
|
|||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
||||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Наоборот, ты как бы фильтруешь визуально код, т.е. читаешь между строк! А что легче читать между одинарными строками или между двойными/тройными?
Тем более что в этом случае
приходится читать одновременно между двойными и тройными строками. |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
Akella, я ничего не имею против того, что тебе так удобнее...
А мне удобнее так, как общепринято (пусть это только и стандарт де-факто)... И привыкать к самодеятельности, чтоб потом путаться в примерах участников того же форума мне ни к чему... Лично мое субъективное мнение! |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Значит пора менять стандарты
|
|||
|
||||
| THandle |
|
||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
1.
2.
ИМХО, во втором способе очевиднее какой begin за какой end отвечает Добавлено через 33 секунды Akella, глянь как код оформляют Rrader, CodeMonkey... Добавлено через 1 минуту и 2 секунды Ну....THandle.... |
||||
|
|||||
| Akella |
|
||||||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Да дело не в стандарте оформления. А в удобочитаемости.
Я ж уже написал, что можно смотреть НЕ на begin end, а на if end Добавлено через 5 минут и 48 секунд С другой стороны вот код:
ты как бы отрываешь условие if if a = b then от самого кода ShowMessage(a); ShowMessage(a); который, собственно, и зависит от того, как сработает условие и будет ли выполнен код. а в таком случае, ты читаешь как бы блоком единым всё
особенно это видно когда бегло просматриваешь код Добавлено через 6 минут и 32 секунды Эх, ничё вы не понимаете в колбасных обрезках Добавлено через 8 минут и 2 секунды вот реальный код, где много мелких слов, к которым ещё припутываются и мешают begin/end
Так ведь ПОНЯТНЕЕ
Добавлено через 8 минут и 41 секунду Так что стандарт этот идёт лесом Добавлено через 11 минут Вот ещё код
Но так понятнее и приятнее
Ну оно и понятно, вы-то всё равно уже не отступите от своего |
||||||||||||
|
|||||||||||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 2 Всего: 51 |
Согласен. Насчёт стандартов выше написали довольно правильно. Стандарты - это раз. И инструменты для форматирования кода - это два. Причём идеальный вариант, когда исходники форматируются автоматически, перед фиксацией в хранилище, либо даже сразу, при сохранении(Jedi Code Formatter так умеет). Регистрозависимость - зло, ибо принуждает к дисциплине. =) Я постоянно использую CamelCase в именовании переменных. При этом не всегда одинаковым образом. |
|||
|
||||
| THandle |
|
||||||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Так он в обоих случаях оформлен суслик знает как
Так дисциплина ж это хорошо)) |
||||||
|
|||||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 2 Всего: 51 |
Теоретически хорошо. =) Кстати, вспомнил, что в gExperts есть эксперт автозамены, который запросто можно приспособить для унификации написания ключевых слов. Например, заменять все begin end на Begin .. End и т.п. |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Bose, често говоря не одобряю я все эти эксперты... Самому лучше нормально писать))) Опять же, дисциплина...в это все и упирается)
|
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
А чем тебе ненормально в GExpert`e вызов конструктора сообщений MessageBox()? Очень удобная штука.
Добавлено через 12 минут и 37 секунд О, а в cnPack процедура чистит USES от неиспользуемых модулей Это сообщение отредактировал(а) Akella - 2.3.2009, 16:33 |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 2 Всего: 40 |
внесу ка и я свою лепту.
представляю как бы нам всем было весело в одной команде -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
|
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Не согласен. Но точка зрения понятна. Про обратную совместимость.
В этом есть что-то. Мне в Eclipse такая штука нравитса. Там есть несколько предопредёлённых настроек, но можно создавать и пользовательские. Эх, мне б такое для ++ -------------------- |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 2 Всего: 51 |
Кстати, недавно вновь работал с Case-sensitivity, и подумал, что отладка в случае с регистрозависимыми именами превратится в сущий адъ. Отладка = использование окна Inspector и watches. Сейчас всё просто, нужно проверить, что-то - ввёл выражение(переменные + функции) в инспектор и получил результат. А если бы delphi был Case-sensitive - пришлось бы ещё и case соблюдать. Ведь code completions там не работает. :(
|
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Bose, тут надо отметить, что многие небезизвестные личности вообще против пошаговой отладки. Вирт, например. Да и сам я никогда её не использовал, а юзал т.н. "отладку для бедных" - ShowMessage, WriteLn. -------------------- |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 7 Всего: 372 |
Bose, "закушались" уже =)
Это неудобно. ИМХО. После гор. олимпиады вообще не использую. Мне там один ответ не засчитали из за того что вот такую отладочную информацию удалил. А в огромном проекте... Нет уж. Лучше использовать нормальные средства. |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
а как обойтись без отладки для "богатых", если, скажем, косяк происходит в цикле на несколько тысяч итераций ближе к концу... я раньше дуплил ибо не знал и по многу минут тратил на тыканье ОК в этих месседжах... а потом немного освоил отладку для "богатыхбелых" и жить стало проще))) Это сообщение отредактировал(а) Kbl4AH - 13.3.2009, 00:37 |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
THandle, Kbl4AH, ещё один нюанс - язык должен быть подабающий. Дабы необходимости пошаговой отладки практически не возникало.
-------------------- |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 2 Всего: 51 |
А я предпочитаю использовать то, что позволяет мне вычислить проблему быстрее. В частности, conditional breakpoints(вообще супер), call stack view, а также логирование и вызов debugbreak. |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
А надо бы не быстрее, а лучше. Но понятно... Весь мир ИТ на том и стоит - побыстрее состряпать и "впарить". А мы уже, как люди, пользующие такую вот стряпню для разработки вынуждены использовать аналогичный подход... Замкнутый круг... -------------------- |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Даже интересно стало, против чего вы так настойчиво голосуете. Врядли против этого... Неужели против ??? Это сообщение отредактировал(а) kemiisto - 5.4.2009, 15:51 -------------------- |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 2 Всего: 40 |
например за это ShowMessage - я иногда использую, например когда надо длинный многострочный динамический SQL увидеть, который в отладке сложно пощупать. В остальном же - отладка. и за это
без коментариев. -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
Это ты просто придумал. А я настаиваю на комментарии! Что не так во фразе: ? -------------------- |
|||
|
||||
| Bose |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 2 Всего: 51 |
Я тоже не понимаю за что минусуют. В мире же столько ужасного кода. И коммерческие проекты - не исключение. Экономят на тестировании, на профессионализме. Хороший программист стоит намного дороже новичка ляпающего "лишь бы работало", и проект сделанный им будет стоить больше, чем такой "сляпанный на коленке". И не так много тех, кто задумывается о том, что этот "сляпанный" проект потом ещё придётся сопровождать, и любые изменения обойдуться в разы дороже. Главное - поскорее "выпустить" продукт, пока клиент не передумал. К счастью, есть исключения. |
|||
|
||||
| pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 2 Всего: 40 |
сразу скажу - минусовал этот пост не я. а с фразой я не согласен лишь в том, что call stack view, логирование, debugbreak - это не только быстрее, но и лучше. бизнес...
например, я участвую в одном проекте, который состряпался за полгода, а сдается, то бишь впаривается уже 2й год -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
Голосуем ;) Это сообщение отредактировал(а) CodeMonkey - 5.5.2009, 12:26 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| CodeMonkey |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
Хорошее замечание. А если немного подумать, то отсюда напрямую следует, что есть один-единственный правильный стандарт, а все остальные - "неверны". И этот стандарт - это стандарт от CG. Да, может быть, он не идеален. Может быть, где-то можно было сделать по-лучше. Но это - единственный де-факто стандарт. Всё остальное - это мелочь, которая используется только вами. И никем более. Если человек пишет, соблюдая стандарт CG: 1). Ни у кого не возникнет проблем с чтением его исходников (исходники RTL/VCL читают все). Этот стандарт легко принимается любым человеком. 2). Нет проблем с взаимодействием с другими людьми - они тоже пишут или могут писать так же. В отличие от ваших самопридуманных стандартов, которые никому не известны, кроме вас. 3). Человек может уйти, вместо него придёт другой. Он не станет переписывать код из-за того, что непривычно написано - ведь оформление хорошо известное - "как у Delphi". 4). И т.д. Знаете, это стоит того, чтобы изменить свои привычки и писать "как следует". Я когда-то писал по-другому, ещё с паскаля. Отступ у меня был в пробел и begin я сдвигал в блок, вот так:
После того, как я понатыкался ещё на кучу подобных же "доморощенных" стандартов, я сказал себе: всё, стоп, хватит. И насильно заставил писать себя так:
А потом это вошло в привычку. P.S. В GExperts есть ещё такая офигенная штука, как авто-замена по словарю и "compiler-assisted" замена. Ну т.е. пишешь ты PROCEDURE, а GExperts - бац! И заменяет на "procedure". Автоматом. Без нажатия чего либо. Или, объявлен, скажем, у вас тип TMyObject, а вы написали tmyobject. GExperts и тут заменит автоматом на TMyObject. На первых порах, для начинающих офигенно нужная и удобная штука. Что-то типа учителя, стоящего за спиной. Только ты накосячишь - он тебя бац по лбу! Хорошо тренирует писать "красиво". Да и не для начинающих тоже полезно. Когда ты что-то очень быстро печатаешь и нет времени зажимать Shift (я очень часто пишу просто inttostr) - GExperts автоматом подсобит. P.P.S. ИМХО, Запись
Плоха по той причине, что тяжелее искать соответствующий begin/end - они не на одной позиции. Это сообщение отредактировал(а) CodeMonkey - 5.5.2009, 13:07 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||||
|
|||||||||
| CodeMonkey |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
2 THandle и регистронезависимость:
Регистронезависимость в Delphi - это благо. Примеры с кривым оформлением не катят. Если человек нихрена не соблюдает стандарт(*), то не будет он его соблюдать и при регистрозависимости:
Сильно легче не становится. Как уже верно заметили, есть всякие авто-заполнялки, которые автоматом подставляют имена. Поэтому, когда пишут так, как ты указал, то это даже не программист, а так, человек, который пытается им быть (он даже среду не знает! Не использует auto-fill). Более того, возникает сомнение в образованности таких людей вообще. Нормальные же люди, не пишут в письменной речи "вОт ТАк". Зло регистрозависимость же как раз тем, что можно спутать переменные. Например, i и I. Объявлены обе (неважно, как это получилось - понятно, что плохой дизайн и всё такое), а мы случайно описались. Это будет уже БАГ. Баг - это гораздо серьёзнее любых стилевых предпочтений. Также регистрозависимость (не только в ЯП) плоха тем, что идёт вразрез с естественным языком (см. также ниже). P.S.
Вот уж до чего дурацкое нововведение. Язык обычно делается так, чтобы быть похожим на естественный. Для того языки и придуманы - упрощать работу для человека. Ну не пишете же вы в реальности: СЛУХАЙ, отправь мне файл. Дурость какая-то (ИМХО). Хотя при наличии какого-нибудь auto-fill/auto-correct это смягчается. Поэтому ещё меня удивляет, когда люди оправдывают { } в сях: "писать короче". Пишите в машинных кодах. Там ещё короче. Примечания: (*) кстати, это не программист, а CodeMonkey (не смотреть на мой ник! -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||
|
|||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 1 Всего: 15 |
||||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
Это ссылка на Quality Central, а конкретно на предложение (suggestion) по замене "string" на "String" в Delphi. Quality Central - это официальный баг-трекер для продуктов CodeGear (Delphi, Builder и т.п.). Можно использовать web-клиент или нативный (Win32 native) - он входит в поставку Delphi, найти можно здесь: C:\Program Files\CodeGear\RAD Studio\6.0\QualityCentral\qualitycentral.exe (путь меняется в зависимости от вашей версии Delphi, есть не во всех версиях). Для участия необходима обычная регистрация на Developer Network (бесплатно, разумеется). -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 3 Всего: 160 |
CodeMonkey, неа. Точнее, не то, что бы совсем неа, а не совсем а.
Ну да, ну да... Ща захоливарим! Согласись, это дурацкий, высосанный из пальца, притянутый за уши, пример. И к тому же, запись а-ля "n принадлежит N" никого не смущает, а тут раскричался. Уж прямо, баг...
Читаю ниже: Ну и вот откуда ветер дует. Если коротко - это не так. Совсем не так. Забавно, но ты сам себе противоречишь:
И в каком это естественном языке у нас есть автодополнялки? Короче, регистрозависимость, до какой то степени, вопрос вкуса. Но вот ключевые слова "капсом" - это "зачёт"! В разы повышают читабельность. Хотя есть и исторические аспекты, почему Вирт решил сделать именно так... Но это удобно. -------------------- |
||||
|
|||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
Может быть и не так, но идти вразрез интуитивным представлениям тоже не стоит. А интуитивно для человека Myvar и MyVar - это одно и то же.
На это и поставим жирную точку -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
http://blog.marcocantu.com/blog/ide_sneak_preview_d2010.html
Итак, в новый IDE входят (барабанная дробь): ... Code Formatter... Теперь стандарт оформления от CodeGear получает ещё +5 очков. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
И ещё 2555 мелких глюков, которые потом будут быстро-быстро исправлять сервис паками
Это сообщение отредактировал(а) Akella - 7.8.2009, 19:43 |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
сорри за подъем старого , но не я первый это сделал
иногда глючит не по детски :( проще имхо
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: нет Всего: 7 |
Понекропосчу немного.
Пишем:
В LongProcedure ошибаемся с шифтом и потом ДОЛГО ищем, где ошибка. А продиктовать или вспомнить, как называется некий объект? Зря что ли поиск по тексту использует регистрозависимость только если явно это указать. А еще очень приятно набирать код на Си, и получать ошибки компилятора из-за каждой ошибки шифта. А какие-нибудь дебильный объявления в стиле WM_SOMEWINDOWSMESSAGE, которые хотелось бы привести к нормальному CamelStyle'у. Под каток такое "счастье", как регистрозависимость. А Вирт ИМХО стал маленько впадать в маразм со времен Модулы. Может конструкции вида IF True THEN DoSomething; End IF и компактнее begin end'ов и висячих else для которых можно было бы просто утвердить правило, что при неясности else относится к ближайшему then. Но это далеко не самая большая проблема стоящая перед Паскаль-программистом, неудивительно, что как только язык получил юниты и другие нужные вещи, никто особо не стал возиться с Модулой (да, я знаю про новосибирскую Excelsior с ее компилятором). Хвалить же Оберон за упрощения совсем не стоит. Не нужны перечислимые типы? А то, что в Object-инспекторе можно вместо невнятной цифры показывать понятное название нужно? Оно ведь как раз за счет перечислимых типов реализуется. И т. д. если на Обероне построить систему класса Delphi для столь же широкого круга программистов, то Оберон очень быстро станет столь же громождкий, как и Object Pascal последних призывов. Языки громоздки не потому что так разработчикам хочется, а потому что потребности пользователей велики и разнообразны. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| rodnover |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Вот я лично только ради такого примера переношу begin на следующую строчку, чтобы по началу строки определят состоит вложенный блок из одной команды или из группы команд.. Ведь пропустить отступ намного проще, чем перевод строки. А вообще я за регистрозависимость.. помогает избежать проблем при связи с динамическими библиотеками и прочими внешними модулями...
Заядлый сишник так не напишет, потому что будет знать о таком косяке. ;) да и давать неосмысленные имена переменным как-то не гут.... А вообще я минут 15 пропарился при отладке проекта в Delphi 2007
А оказалось просто.. в определении переменной буква "о" была русской... |
||||||||
|
|||||||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
||||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
К тому же чему и разговор про регистронезависимые отступы. ;)
А вообще поддержал разговор о несовсем удобных фичах Делфи. |
|||
|
||||
| CodeMonkey |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
Тут же, ниже:
Чем "Count vs Cоunt" принципиально отличается от "count vs Count"? Ничем. И там и там можно сделать одинаковый косяк. Т.е. мыши кололись, но...
Ну и как же тогда вы умудрились написать Count с русской буквой? Если что-то можно сделать неправильно - это обязательно сделают неправильно. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||
|
|||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
||||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Ну дык не знал же я про эту фичу. ;) Потому и получилась описка.
Принципиально отличается тем, что если во внешнем регистронезависмодуле объявлено count, то на Count будет ошибка линковки выдаваться. ;) |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 4 Всего: 89 |
Т.е. ради этого вы готовы горы свернуть и дать каждой обезьяне в руки по гранате? Добавлено через 6 минут P.S. К тому же, лично мне не ясно, как регистрозависимость может решить указанную "проблему линковки". -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| rodnover |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 7.4.2009 Репутация: нет Всего: 10 |
Обычно.. при использовании
случайное использование count выдаст ошибку при компиляции, а не при линковке модуля, или упаси всё чему люди молятся, динамическом подключении.. Это сообщение отредактировал(а) rodnover - 23.11.2009, 15:18 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 7 Всего: 329 |
Я вот сейчас щупаю qt-creator. Это ж кашмар
Доводчик кода вместо того, чтобы подсказывать код.... требует от тебя полного и точного набора названия компоненты или метода. Использование доводчика кода сводится к минимуму. Т.е. вместо того, чтобы я нажал Ctrl+пробел, начал набирать qmes и мне доводчик выдал бы QMessageBox + все похожие названия.... я должен набирать в точности QMes. Ошибся на одну букву или не там где надо нажал Shift, и всё, доводчик закрылся. Идиотизм. Наверное, создатели qt-creator не ведают о RAD. Добавлено через 5 минут и 48 секунд http://forum.vingrad.ru/forum/act-ST/f-69/...9/unread-1.html я тут в религиозных войнах создал опрос Это сообщение отредактировал(а) Akella - 29.12.2009, 16:28 |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Добро пожаловать в форум группы "Delphi". В разделе разрешается:
Строго запрещено:
Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Форум группы: delphi | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |