ОК>>Я умышленно утрировал чтобы донести до тебя мысль.
A>Не надо утрировать, лучше говорите конкретно и по делу.
Так я и говорю. Ты отказываешся понимать.
ОК>>Ты не понимаешь что код и оформление этого кода и есть одно целое!
A>Откуда взялся такой вывод? Большинство исходников хранится в виде текстовых файлов, где оформление делается пробелами, табами и переносами строк. Раздельное хранение форматирования и контента — это экзотика, я такого не встречал, и годится скорее для Word-а.
Так я тебе об этом и говорю. Все комменты, табы, пробелы и лексеммы языка и есть код.
A>С другой стороны, вы всерьез считаете, что использование именно двух пробелов в этом месте и именно пяти вон в том, необходимы для правильной работы кода? Компилятор в курсе? A>Или вы утверждаете, что количество пробелов — это отображение личности писавшего и трогать такой код нельзя, чтобы не оскорбить человека? А о названиях переменных и классов вы долго спорите? Я бы не хотел в такую команду.
Не спорим.
A>>>Ну нужно повторяться, нужно всего один раз внятно объяснить свою позицицю. Пока я вижу только эмоции и отсутствие логических аргументов/рассуждений. ОК>>Сто раз объяснил.
A>Можно ссылку на окончательный и наиболее полный вариант ответа? А, к черту полноту, просто хоть на какой-нибудь внятный ответ?
Сто раз был.
ОК>>А почему только вначале можно а в середине нельзя?
A>Потому что тогда ничего не расползается и у всех выглядит одинаково хорошо, при любых настройках табов и при любых изменениях файла, включая использование инструменов рефакторинга. Это простое правило, которое легко запомнить и которому легко следовать. Кроме того, это облегчает сравнение файлов и отслеживание истории изменений.
Не убедил. А при отслеживании истории можно игнорировать пробелы/табы.
A>>>А для чего вам табы в середине? Для индентации? Вот.
ОК>>Мне они вообще не нужны но если что-то можно сделать, то это будет сделанно! Только не приплетай сюда тулзы для борьбы с этой возможностью. Было бы очень хорошо если бы этой возможности не было в первую очередь! Это мой посыл.
A>И что изменится, если вместо табов в середине будут пробелы в середине?
Ты видел код Петцольда? Мне нравится как он форматирует код. По крайней мере тот что про ВинАПИ. Там у него кучи пробелов в середине. Читаемость хорошая но боюсь ты бы зарубил его со своим полицаем.
Re[19]: Он думает, что пишет качественный код. Скоро его мнение изменится
ОК>>Если бы изначально не было табов, то и не было бы таких проблем и этих дискуссий (которые просто экономически невыгодны).
A>Каких проблем бы не было? Дикой смеси 2, 4 и 8 пробелов в разных файлах одного проекта? A>Для тех, кто способен объективно и без эмоций воспринимать логические доводы, эта дискуссия длилась бы 15 минут — описание плюсов и минусов каждого подхода, естественный выбор, обсуждение средств энфорсмента на уровне команды.
То же самое могу сказать и о тебе!
A>Но если важнее доказать, что кто-то в интернете не прав, то можно часами повторять одно и то же.
Ну так чего полез в "драку?"
Re[21]: Он думает, что пишет качественный код. Скоро его мнение изменится
A>>>Все остальные варианты = build error, в том числе два пробела подряд или пробел после таба. IT>>А как же табличное форматирование?
A>Что это такое и зачем оно нужно? На комментарии правила оформления кода не действуют, там можно и выравнивать, и табличку нарисовать.
Я думаю тут имелось в виду то что я имел в виду когда сказал как форматирует код Петцольд.
З.Ы. О! В вашем стане начались разногласия?
Re[22]: Он думает, что пишет качественный код. Скоро его мнение изменится
Говорить по делу — значит отстаивать свою позицию, приводя разумные аргументы, и проводя логические рассуждения.
Фразы "а я говорю, а он не понимает" — это не по делу.
ОК>Так я тебе об этом и говорю. Все комменты, табы, пробелы и лексеммы языка и есть код.
При этом лексемы языка читаются как человеком, там и компилятором. А пробелы нужно исключительно человеку для облегчения чтения. Компилятор их игнорирует. Поэтому пробелы — это чистое оформление, а не код, хотя и находятся с кодом в одном файле.
A>>Можно ссылку на окончательный и наиболее полный вариант ответа? А, к черту полноту, просто хоть на какой-нибудь внятный ответ? ОК>Сто раз был.
Ссылку.
ОК>>>А почему только вначале можно а в середине нельзя?
A>>Потому что тогда ничего не расползается и у всех выглядит одинаково хорошо, при любых настройках табов и при любых изменениях файла, включая использование инструменов рефакторинга. Это простое правило, которое легко запомнить и которому легко следовать. Кроме того, это облегчает сравнение файлов и отслеживание истории изменений.
ОК>Не убедил.
Т.е. когда расплывается — это лучше, чем когда у всех выглядит одинаково хорошо?
ОК>А при отслеживании истории можно игнорировать пробелы/табы.
А если ногу натер, то можно ходить, не наступая на нее. Зачем создавать проблемы, чтобы потом с ними бороться или игнорировать?
A>>>>А для чего вам табы в середине? Для индентации? Вот.
A>>И что изменится, если вместо табов в середине будут пробелы в середине? ОК>Ты видел код Петцольда? Мне нравится как он форматирует код. По крайней мере тот что про ВинАПИ. Там у него кучи пробелов в середине. Читаемость хорошая но боюсь ты бы зарубил его со своим полицаем.
Повторяю вопрос: что изменится, если вместо табов в середине будут пробелы? Как это решит проблему расползания форматирования?
Re[20]: Он думает, что пишет качественный код. Скоро его мнение изменится
A>>Каких проблем бы не было? Дикой смеси 2, 4 и 8 пробелов в разных файлах одного проекта? A>>Для тех, кто способен объективно и без эмоций воспринимать логические доводы, эта дискуссия длилась бы 15 минут — описание плюсов и минусов каждого подхода, естественный выбор, обсуждение средств энфорсмента на уровне команды.
ОК>То же самое могу сказать и о тебе!
Аргументы? В моих словах нет эмоций, только логика и выводы на основании объективного сравнения. У вас — "а мне нравится так, потому что просто вот, а вы не согласны, значит злые". Детский сад. Представьте себе, что вам нужно изложить свою позицию на суде. Повторяться и отвечать возможности не будет, поэтому все должно быть сказано в одном сообщении, максимально аргументированно и полно. Слабо?
Проблема "этого" поколения программистов в отрывочности мышления. Однократно ответить на чужое высказывание способны, а выстраивать длительную линию рассуждений — уже нет.
Re[21]: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, abibok, Вы писали:
A>>>Все остальные варианты = build error, в том числе два пробела подряд или пробел после таба. IT>>А как же табличное форматирование?
A>Что это такое и зачем оно нужно?
Табличное форматирование это то, что позволяет во втором примере практически мгновенно обнаружить ошибки по аномалиям в форматировании.
var n1 = new[]
{
new { Text="five", Number=5 },
new { Text="fifteen", Number=15 },
new { Text="two handres and fiveteen", Number=225 },
new { Text="six thousabd two handreds and fifteen", Number=6215 },
};
var n2 = new[]
{
new { Text = "five", Number = 5 },
new { Text = "fifteen", Number = 15 },
new { Text = "two handreds and fiveteen", Number = 225 },
new { Text = "six thousand two handreds and fifteen", Number = 6215 },
};
Первый пример нужно тщательно просмотреть и мысленно оттранслировать, чтобы понять его логику и найти ошибки. Во втором это делается слёту ещё до того как будет понятен смысл.
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[22]: Он думает, что пишет качественный код. Скоро его мнение изменится
IT>Табличное форматирование это то, что позволяет во втором примере практически мгновенно обнаружить ошибки по аномалиям в форматировании.
Такой код часто приводят в пример сторонники индентации. Как показывает практика, если использовать первый вариант (где не так хорошо все видно), то проблем с читаемостью это не вызывает. Исключение когда в файле много раз встречается такое, тогда можно сделать rule suppression.
У всего есть плюсы и минусы, такие моменты можно считать минусом отказа от индентации, но плюсы перевешивают.
Re[23]: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, abibok, Вы писали:
A>У всего есть плюсы и минусы, такие моменты можно считать минусом отказа от индентации, но плюсы перевешивают.
Причём тут индентация? Ты блоки кода пробельными строками отбиваешь для удобства восприятия или оформляешь всё одной сплошной полосой? Табличное форматирование — это отбивка кода по вертикали, чтобы отделить логические участки кода. Как в предыдущем примере участки инициализации или, ещё в качестве примера, блок объявления переменных от их инициализации. Смысл этого такой же как и пробельные строк, которые используются для разделения кода по вертикали.
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, Олег К., Вы писали:
IT>>4 и фиг его знает. ОК>У меня восемь. Вложенностей от начала строки 3-4, максимум пять. Весь код посередине экрана. Нет нагромождения слева и нет кучи свободного места справа и, как бонус, сразу виднее что чему подчиняется.
Восемь для меня не удобно.
IT>>Всё зло от пробелов! Tabs rock, spaces suck! ОК>Пробелы по этой причине предлагаю отменить! Используй только табы! Вообще, вырви ты эту клавишу из клавиатуры.
Вырви лучше себе таб. А пробелы мне нужны, например, для табличного форматирования.
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[24]: Он думает, что пишет качественный код. Скоро его мнение изменится
Выравнивание кода внутри строки имеет те же самые недостатки, что и выравнивание начала строки, добивая лидирующие табы пробелами.
IT>Ты блоки кода пробельными строками отбиваешь для удобства восприятия или оформляешь всё одной сплошной полосой?
Пустые строки между блоками кода — это другое. Их можно использовать, и для них есть свои правила. Пустая строка обычно всего одна и она не превратится в несколько, если мы поменяем настройки таба.
IT>Табличное форматирование — это отбивка кода по вертикали, чтобы отделить логические участки кода. Как в предыдущем примере участки инициализации или, ещё в качестве примера, блок объявления переменных от их инициализации. Смысл этого такой же как и пробельные строк, которые используются для разделения кода по вертикали.
Я понимаю. И все же считаю, что любое выравнивание — зло.
Re[9]: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, abibok, Вы писали:
A>Выравнивание кода внутри строки имеет те же самые недостатки, что и выравнивание начала строки, добивая лидирующие табы пробелами.
Какие именно?
IT>>Ты блоки кода пробельными строками отбиваешь для удобства восприятия или оформляешь всё одной сплошной полосой? A>Пустые строки между блоками кода — это другое. Их можно использовать, и для них есть свои правила. Пустая строка обычно всего одна и она не превратится в несколько, если мы поменяем настройки таба.
А табличное форматирование и не делается табами. Только пробелами.
IT>>Табличное форматирование — это отбивка кода по вертикали, чтобы отделить логические участки кода. Как в предыдущем примере участки инициализации или, ещё в качестве примера, блок объявления переменных от их инициализации. Смысл этого такой же как и пробельные строк, которые используются для разделения кода по вертикали.
A>Я понимаю. И все же считаю, что любое выравнивание — зло.
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[26]: Он думает, что пишет качественный код. Скоро его мнение изменится
A>>Выравнивание кода внутри строки имеет те же самые недостатки, что и выравнивание начала строки, добивая лидирующие табы пробелами. IT>Какие именно?
Когда такой код редактируется (или добавляются новые строки) другими людьми, он быстро превращается в смесь табов и пробелов. Проще договориться не выравнивать вообще, чем обеспечить выполнение "в начале строки только табы, в середине только пробелы".
Re[27]: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, abibok, Вы писали:
A>>>Выравнивание кода внутри строки имеет те же самые недостатки, что и выравнивание начала строки, добивая лидирующие табы пробелами. IT>>Какие именно?
A>Когда такой код редактируется (или добавляются новые строки) другими людьми, он быстро превращается в смесь табов и пробелов. Проще договориться не выравнивать вообще, чем обеспечить выполнение "в начале строки только табы, в середине только пробелы".
Никогда не испытывал с этим никаких проблем. А у тебя Visible White Space включены? Там же сразу всё видно как на ладони.
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, abibok, Вы писали:
IT>>Никогда не испытывал с этим никаких проблем. А у тебя Visible White Space включены? Там же сразу всё видно как на ладони. A>Нет, обычно не включены. У меня StyleCop.
Да хоть просто cop. Включи VWS, покрась их в серое, чтобы сильно не выделялись и скоро ты про проблему табуляций/пробелов забудешь навсегда.
... << RSDN@Home 1.2.0 alpha 5 rev. 69>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[29]: Он думает, что пишет качественный код. Скоро его мнение изменится
Извините, все не читал, слишком много. Потом просмотрю
>И фиг бы с ним, но ты же ещё раскидал копии этой структуры по разным хидерам — это-то нафига делать
Это я ступил. Кто спешит тот людей ... заставляет писать об этом на форумах
>Это потому, что когда C++-программист будет читать твой код и увидит "and", "not", "or"
Спасибо за подробный ответ. Но есть замечания. Вспомним еретический <ciso646>, даже заглянем в него. И опа, кажется индусы завелись в стандарте. В общем теперь, все эти вопли и сморщенные носики касательно синтаксиса кажутся немного преувеличенными. Хотя не буду спорить, херить стандартный синтаксис не хорошо, но блин, он ведь иногда такой уродливый.
По поводу страданий кодера который увидит в коде and or not — макросы от остального отличаются цветом шрифта (не в notepad ведь код пишем) и всегда есть подсказки плюс хоткей чтобы за секунду ознакомиться с макросом.
>И на сладкое. Например, в boost встречаются методы null(). Догадываешься, какой будет эффект, если попытаться совместить boost с Syntax.h?
Согласен, не знал. Но у меня уже были подобные конфликты имен, тут все сразу понятно. Жмем Rename в VAX и все ссылки в коде исправлены. Ерунда
>А просто разделители без текстов поставить — нет?
Я пробовал. Нет, все равно сливается в кашу
>Потому что не надо пытаться делать из C++ другой язык программирования с другим синтаксисом
Синтаксический сахар не делает из C++ другой язык
>Что это за not? Будет ли здесь вызвано неявное приведение типа, возвращаемого Foo к bool? Или к int? Или есть какой-нибудь MySuperBoolean?
Возможно, но маловероятно. Серьезно, как надо обкуриться чтобы принять not за класс или еще что-то?
>Ты в курсе о погрешностях вычислений с плавающей точкой?
Да конечно в курсе и мне еще предстоит детально в этом разобраться, а то немного мутновато. Ну а пока, тот код относился к вращению камеры в пространстве, если б было фатально, я б сразу заметил .
Re[6]: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, Олег К., Вы писали:
>Чувак, по одному твоему посту видно что ты новичок, но я тебя успокою. Видел бы ты код многих сеньйоров. Бейсбольной битой надо бить.
Понимаю, но самое плохое в этом то что не полный новичок, жуниор с опытом командной работы. Фиксил код сеньйоров, знаю, видел, полностью согласен
>Этих не слушай. Это чуваки из серии что позапихают в проект все фичи плюсов потому что "реальные пацаны так пишут!"
Я так и подумал, но все равно спасибо что успокоили
>Вообще можно обойтись без синглтонов.
Как именно? Просто скажите по какому слову гуглить
>Да, несколько станно было видеть дефайны для стандартных логических операторов.
Но ведь есть <ciso646> — это не я придумал. Зато теперь буду знать, что многих напрягает
>Даже если ты классно решил задачи, то будут придираться к таким мелочам. Сам подумай, кому охота вникать в логику чужого проекта? По одной твоей просьбе и видно что ты новичок.
Этот момент я упустил. Я хотел услышать что-то вроде: да твой код понятно смотреть, имена, структура, блоки — все четко и просто. Или наоборот — твой код труднее переварить чем внутреннее устройство STL. А получилось все только по мелочам и синтаксису. В общем, много людей потратил немного своего времени, а толку мало.
>Парень, не тушуйся и не особо прислушивайся тут к некоторым.
Не то что я особо парюсь из-за этого но спасибо за утешение. Но все равно кто-то теперь на собеседовании будет косо смотреть, вдруг тему читал?
Re[6]: Он думает, что пишет качественный код. Скоро его мнение изменится
Здравствуйте, _Obelisk_, Вы писали:
_O_>Ты гей, что ль? Фразы как-то обтекаемо строишь. Гнильцо какое-то чувствуется.
Судя по твоим фразам ты себе дружка ищешь и с чего-то решил со мной подружиться. Я тебе на знакомство отвечу примерно следующее: иди на ***** муди*******