Re[6]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CompleteBrains  
Дата: 01.05.13 06:27
Оценка: +1
Здравствуйте, abibok, Вы писали:

A>Есть стиль как оформление и стиль как способ выразить идею на языке программирования. С недостатками первого можно мириться, но если код написан коряво (функционально коряво, а не пробелы-скобочки), его трудно понимать и поддерживать в будущем, то он должен быть выброшен и переписан.


Сомневаюсь, что у тебя нашлось время вникать в функциональный смысл этого кода. Но все же если ты сделал это, ткни пальцем, дело нескольких секунд, не так ли?
Re[5]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, tpascal, Вы писали:

T>эт случаем не ТЗ сюда
Автор: Lokk
Дата: 05.04.13
?

А я то откуда знаю?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, cosimo, Вы писали:

CC>>Вот за шо надо вбывать так это за микс табов и пробелов в одном и том же отступе.

C>
ДА!
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Всё зло от пробелов! Tabs rock, spaces suck!

Вот у меня щас на "новом" проекте по "истерическим причинам" в гигаLOC кода уже имеется микс табов и пробелов, при этом таб 8 пробелов а выравнивать надо на 3 (три!) пробела. При этом максимальная длина строки 80 символов.
При этом тотально у всех если не ретиновый макбук то хотя бы два (у некоторых 3 или 4) 24" моника.
Ну вот нахрена?
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Хорошо, хорошо, уговорили. В конце концов, пробелы и табуляции — наименьшее из зол.

Алиллуйя!
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, CompleteBrains, Вы писали:

ГВ>>Зачем нужна struct Pointer?

CB>Я ненавижу нижнее подчеркивание
Так сильно что даже кющать не могёшь?

ГВ>>Ещё убери пустые комментарии "Description:", зачем они? Или заполни их содержательным текстом.

CB>Чтобы методы визуально отделять друг от друга иначе они сливаю в сплошное мессиво
Вставь просто пустую строку

A>>Syntax.h это вообще жесть, я думал так только индусы могут

CB>Why? А то действительно, не понимаю
Это лютый пц, за такое сразу no hire.
Пока поверь на слово — за такое принято бить канделябром.

ioj>>дефайны на стандартные вещи — удел полных *даков

CB>Why? Why? Oh God WHY?
Да потому что ты плодишь лишние сущности. Ты ещё for, while, if передефайни. А после этого дай кому нибудь этот "код" почитать и посчитай 'WTF per minute' factor.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[6]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А что, наконец, делать с битовыми операциями? Они тоже — and/or/xor. Как будешь обозначать? bitand, bitor, bitxor?

and and, or or, xor xor

ГВ>И на сладкое. Например, в boost встречаются методы null(). Догадываешься, какой будет эффект, если попытаться совместить boost с Syntax.h?

Вспоминается #define true false // happy debugging!!!
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, CompleteBrains, Вы писали:

>>Чувак, по одному твоему посту видно что ты новичок, но я тебя успокою. Видел бы ты код многих сеньйоров. Бейсбольной битой надо бить.

CB>Понимаю, но самое плохое в этом то что не полный новичок, жуниор с опытом командной работы. Фиксил код сеньйоров, знаю, видел, полностью согласен
Ну, тогда у тебя всё ещё "спереди". Тебя ещё укусит Александреску, и тебе будет хотеться выть на луну писать ВСЁ на шаблонах и ВСЁ делать параметризуемым ВСЕМ.
Потом ещё помечешься между языками, то один то другой боготворя а затем топя в помоях. Не ты первый, не ты последний в общем.

>>Да, несколько станно было видеть дефайны для стандартных логических операторов.

CB>Но ведь есть <ciso646> — это не я придумал. Зато теперь буду знать, что многих напрягает

The tokens were added to the standard in a 1995 amendment to the C90 standard.

Это как диграфы — для совсем бедных.

>>Даже если ты классно решил задачи, то будут придираться к таким мелочам. Сам подумай, кому охота вникать в логику чужого проекта? По одной твоей просьбе и видно что ты новичок.

CB>Этот момент я упустил. Я хотел услышать что-то вроде: да твой код понятно смотреть, имена, структура, блоки — все четко и просто. Или наоборот — твой код труднее переварить чем внутреннее устройство STL. А получилось все только по мелочам и синтаксису.
Просто взгляд спотыкается на этих "мелочах" и дальше просто читать не хочется.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>Ты не понял. Я имел в виду индентацию кода а не размер мониторов. А может быть и понял но ушел от ответа таким образом.

Ну вот он и говорит что индентация кода слева должна выполняться строго табами.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, Олег К., Вы писали:

ОК>Ты выставил табы в четыре спейса и сделал индентацию в два тэба

Вот тут логическая ошибка.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[11]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: CreatorCray  
Дата: 01.05.13 07:46
Оценка:
Здравствуйте, IT, Вы писали:

IT>И другие потом с этим поделать ничего не смогут.

Иногда могут. Ctrl+K+F часто спасает от таких вот гениев.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[30]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Privalov  
Дата: 01.05.13 08:00
Оценка:
Здравствуйте, CompleteBrains, Вы писали:

>>Что это за not? Будет ли здесь вызвано неявное приведение типа, возвращаемого Foo к bool? Или к int? Или есть какой-нибудь MySuperBoolean?

CB>Возможно, но маловероятно. Серьезно, как надо обкуриться чтобы принять not за класс или еще что-то?

Тебе сказали уже, что в C/C++ существуют 2 операции not — логическая и побитовая.

Вот работал я над проектом, в котором исполняемые модули собирались из исходников на C и Фортране. Причем большую часть времени я возился с Фортраном. У него побитовых операций нет (по крайней мере, тогда не было). Отрицание в нем определено так: .NOT. И хорошо, что в С оно выглядело иначе. Потому что иначе мне пришлось бы каждый раз вспоминать, что это за операция, отвлекаясь, таким образом, от решения основной задачи. Или я пропускал бы эту not автоматом. В последнем случае я мог бы огрести кучу неприятностей.

Или еще вариант: реализуешь ты, к примеру, какой-нибудь функционал для Java с помощью JNI. Синтаксис у C и Java весьма похожи. А если все делаешь в одной и той же среде, скажем, в Eclipse, легко запутаться и начать писать not в Java-коде. А потом недоумевать, почему Eclipse в одних местах на эту not ругается, а в других — нет.
Re[6]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: tpascal  
Дата: 01.05.13 08:12
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, tpascal, Вы писали:


T>>эт случаем не ТЗ сюда
Автор: Lokk
Дата: 05.04.13
?

CC>А я то откуда знаю?
промазал сообщением, хотел топикстартеру ответить.
Re[3]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: SE Украина  
Дата: 01.05.13 12:52
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> Табуляции в форматировании — зло.

V>Пробелы в форматировании — зло.

Кстати, как человеку из мира С#, мне интересно, как обстоят дела в С/С++ стане в этом отношении?
Какие настройки использую по умолчанию:
1) Основная среда разработки
2) Тулзы работы с кодом вроде решарпера, которые так и норовят переформатировать код по своему
3) Поставщики генераторов кода для доступа к БД, поставщики контролов и т.п.

Поясню. В С#, к примеру, это
1) VS от 2005 до 2012 — пробелы
2) Resharper — пробелы
3) Внезапно тоже пробелы
Перенастраивать весь этот зоопарк — то еще удовольствие, да и вообще на уровне сизифова труда.
Все равно вылезут потом то тут, то там пробелы посреди табов и получится бардак.

Приходится диагностировать некоторым архитекторам заказчиков неопасный симптом "табуляции головного мозга". Как правило для дотнетчика это признак более серьезных заболеваний вроде "серебряная пуля головного мозга" и "не барское это дело — код писать".
Re[30]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 01.05.13 14:27
Оценка:
Здравствуйте, CompleteBrains, Вы писали:

>>Это потому, что когда C++-программист будет читать твой код и увидит "and", "not", "or"

CB>Спасибо за подробный ответ. Но есть замечания. Вспомним еретический <ciso646>, даже заглянем в него. И опа, кажется индусы завелись в стандарте.

Да нет, это не индусы завелись в стандарте. Это в стародавние времена были некоторые сложности с кодировкой и ради совместимости пришлось вводить такие переобозначения, CreatorCray как раз правильно вспомнил про диграфы (кстати, ещё есть и триграфы). То есть это не украшение синтаксиса, а решение насущной проблемы.

CB>В общем теперь, все эти вопли и сморщенные носики касательно синтаксиса кажутся немного преувеличенными.


Отнюдь. Если бы ты включил iso646.h и сказал, что программа предназначена для компиляции разными компиляторами, в том числе каким-нибудь древнейшим C++, а просматривать ты её собираешься на терминале с 7-битным знакогенератором — отношение было бы совсем другое. А когда отовсюду торчат уши DirectX и C++11...

CB>Хотя не буду спорить, херить стандартный синтаксис не хорошо, но блин, он ведь иногда такой уродливый.


Дело вот в чём. Как правило, кодом не любуются — его читают ради того, чтобы в нём что-то поправить или разобраться, как он работает. В другое время код попросту никому не нужен — работает, и славно. Представь, что ты работаешь с проектом, ну, скажем, всего в 2-3 МБ исходников. Будешь ты им любоваться? Если да, то всем кодом сразу или по частям?

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

CB>По поводу страданий кодера который увидит в коде and or not — макросы от остального отличаются цветом шрифта (не в notepad ведь код пишем) и всегда есть подсказки плюс хоткей чтобы за секунду ознакомиться с макросом.


Любопытная смесь рассуждений XXI века и отсылок к iso646 Ну то есть, да, конечно, можно всегда нажать F12 — только чем меньше приходится это делать, тем лучше.

>>И на сладкое. Например, в boost встречаются методы null(). Догадываешься, какой будет эффект, если попытаться совместить boost с Syntax.h?

CB>Согласен, не знал. Но у меня уже были подобные конфликты имен, тут все сразу понятно. Жмем Rename в VAX и все ссылки в коде исправлены. Ерунда

Ты собираешься исправлять boost по такому пустяковому поводу?

>>А просто разделители без текстов поставить — нет?

CB>Я пробовал. Нет, все равно сливается в кашу

Ну OK, спишем на эстетство автора. В конце концов, это можно обозвать placeholder-ами. Вообще, по поводу комментариев я бы тебе посоветовал посмотреть на Doxygen. Не то, чтобы это было требованием, но кое-какая реальная польза от него случается.

>>Потому что не надо пытаться делать из C++ другой язык программирования с другим синтаксисом

CB>Синтаксический сахар не делает из C++ другой язык

Чтобы не впадать в очередную серию холиваров — да, согласен. Но всё равно такие изыски смотрятся, уж извини, наивно. Такой стиль свойственен новичкам не только по отношению к C++. Приведу аналогию из мира Lisp: чуть не каждый новый лиспер первым делом бросается изобретать Lisp без скобок.

>>Что это за not? Будет ли здесь вызвано неявное приведение типа, возвращаемого Foo к bool? Или к int? Или есть какой-нибудь MySuperBoolean?

CB>Возможно, но маловероятно. Серьезно, как надо обкуриться чтобы принять not за класс или еще что-то?

Ха!

class Invertor
{
public:
    Invertor(){}

    template<typename T>
    inline bool operator &= (T val) const
    {
        Log("Inversion operator");
        return !val;
    }
};

#define not Invertor() &=

bool value = not otherValue;


Макросы — они такие макросы...

>>Ты в курсе о погрешностях вычислений с плавающей точкой?

CB>Да конечно в курсе и мне еще предстоит детально в этом разобраться, а то немного мутновато. Ну а пока, тот код относился к вращению камеры в пространстве, если б было фатально, я б сразу заметил.

Ну, хорошо.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Олег К.  
Дата: 01.05.13 17:06
Оценка:
>>>Чувак, по одному твоему посту видно что ты новичок, но я тебя успокою. Видел бы ты код многих сеньйоров. Бейсбольной битой надо бить.
CB>>Понимаю, но самое плохое в этом то что не полный новичок, жуниор с опытом командной работы. Фиксил код сеньйоров, знаю, видел, полностью согласен
CC>Ну, тогда у тебя всё ещё "спереди". Тебя ещё укусит Александреску, и тебе будет хотеться выть на луну писать ВСЁ на шаблонах и ВСЁ делать параметризуемым ВСЕМ.

Скорее всего не будет. Видно ведь что понимает что не нужно это!

>>>Даже если ты классно решил задачи, то будут придираться к таким мелочам. Сам подумай, кому охота вникать в логику чужого проекта? По одной твоей просьбе и видно что ты новичок.

CB>>Этот момент я упустил. Я хотел услышать что-то вроде: да твой код понятно смотреть, имена, структура, блоки — все четко и просто. Или наоборот — твой код труднее переварить чем внутреннее устройство STL. А получилось все только по мелочам и синтаксису.
CC>Просто взгляд спотыкается на этих "мелочах" и дальше просто читать не хочется.

Да даже если бы мелочей таких не было, никто бы не стал вникать в логику или как все классно разбито на модули/классы/функции. Поэтому только и остаются такие придирки к мелочам.
Re[9]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Олег К.  
Дата: 01.05.13 17:13
Оценка:
ОК>>Ты не понял. Я имел в виду индентацию кода а не размер мониторов. А может быть и понял но ушел от ответа таким образом.
CC>Ну вот он и говорит что индентация кода слева должна выполняться строго табами.

Должна, должна... Кому она что должна?

З.Ы. Чтобы тут не говорилось, но факт остается фактом. Везде где я был видел дикую смесь табов и пробелов.
Re[9]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Олег К.  
Дата: 01.05.13 17:17
Оценка:
IT>>>4 и фиг его знает.
ОК>>У меня восемь. Вложенностей от начала строки 3-4, максимум пять. Весь код посередине экрана. Нет нагромождения слева и нет кучи свободного места справа и, как бонус, сразу виднее что чему подчиняется.

IT>Восемь для меня не удобно.


Для меня было тоже вначале непривычно а потом понял что это классно. Плюсы я уже перечислил.

IT>>>Всё зло от пробелов! Tabs rock, spaces suck!

ОК>>Пробелы по этой причине предлагаю отменить! Используй только табы! Вообще, вырви ты эту клавишу из клавиатуры.

IT>Вырви лучше себе таб. А пробелы мне нужны, например, для табличного форматирования.


А я почему должен вырывать? Я табы заменяю при сохранении на спейсы и тебе который раз говорю что без табов ты прожить сможешь, а вот без спейсов нет.
Re[10]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Олег К.  
Дата: 01.05.13 17:23
Оценка:
IT>>Восемь для меня не удобно.

A>Восемь превращается в тряпки на экране уже при минимальной вложенности. Неудобно.


A>
A>class ForEachTest
A>{
A>        static void Main(string[] args)
A>        {
A>                int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };
A>                foreach (int i in fibarray)
A>                {
A>                        if (i % 2 === )
A>                        {
A>                                Console.WriteLine("a");
A>                        }
A>                        else
A>                        {
A>                                Console.WriteLine("b");
A>                        }
A>                }
A>        }
A>}
A>


Не вижу тряпок но советую посмотреть где у тебя в основном код концентрируется на экране. Скорее всего в левой части в то время как в правой части куча свободного пространства.

Но таки да, я с тобой согласен что потому что методы в Шарпе должны быть определены в классе, это создает дополнительный уровень индентации. Оберни это в неймспейс — еще один уровень. Таков язык и именно из-за самого языка люди ставят табы в четыре спейса.

Но есть ведь еще Си, Ассемблер, Сиквел, Перл и шеллы. Для них тэб в восемь спейсов просто идеален.
Re[21]: Он думает, что пишет качественный код. Скоро его мнение изменится
От: Олег К.  
Дата: 01.05.13 17:36
Оценка:
IT>>>Давай. От ведущих.
ОК>>Все или ничего!

IT>Тогда предложи отменить то или иное прямо в OS или даже в железе.


Предложил тебе ниже вырвать пробел из клавиатуры. Дело за тобой.

IT>>>Так всё дело в этом, а не в табах.

ОК>>Повторюсь, табы создали только лишние проблемы.

IT>Никаких проблем они не создают. В отличие от пробелов.


Повторюсь еще раз. Без тэбов ты проживешь, без пробелов — нет.

IT>>>Мне он не нравится. Значит для меня плохой.

ОК>>Ну а кому-то нравится. Кто из вас прав?

IT>Никто или оба. Потому что мы говорим о предпочтениях.


ОК>>Мне лично все равно до стиля.


IT>А зачем ты его тут тогда привёл в качестве аргумента.


Мы начинаем повторяться. Я тебе выше уже говорил что привел пример стиля который существует и который ломает твою догму с табами.

ОК>>Ну разумеется мы все следуем чему-то "свыше." Дома мне нравится делать по-своему, на работе я отключаюсь от этого. Пойнт тут в том что я могу следовать чужим "предпочтениям" а не просто кричать код г, кругом табы а не спейсы и не наоборот.


IT>Следовать за стадом — дело как раз не хитрое. Убеждать людей и ломать устаревшие предпочтения гораздо трудней и интересней.


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