1994

Стилистические Войны программистов

Когда-то давным давно я склепал и залил в инет несколько юмористических картинок касательно стилистики написания кода на C++, которые мгновенно разлетелись и вызвали тогда много срача жарких дискуссий на эту тему... И вот перерывая свои старые и пыльные архивы я сейчас снова на них случайно наткнулся. Поэтому решил поделиться с вами полной подборкой. :)

Не сочтите за баян, надеюсь, что кого-нибудь вдохновит и он выложит в комментариях свои достойные варианты на эту тему :))

// [0]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

// [1]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

// [2]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

// [3]

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

А вот вариант от некоего пользователя под ником Ges( если ты есть на Пикабу, то респект тебе - долго смеялся с твоей картинки :)) )

Стилистические Войны программистов Программирование, C++, Юмор, Длиннопост

P.S. Баянометр ругался на одну отдельно выложенную картинку :)

Лига программистов C/C++

65 постов4.8K подписчика

Правила сообщества

Соблюдайте правила Pikabu:

https://pikabu.ru/html.php?id=wtf


Помимо этого ЗАПРЕЩЕНО:

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

7
Автор поста оценил этот комментарий

Так если это твоя картинка, почему он должен убирать твой копирайт?

раскрыть ветку (1)
88
Автор поста оценил этот комментарий
Потому что она уже полностью изменена и моей не является :))
показать ответы
26
Автор поста оценил этот комментарий
С чего это лучше убрать?
раскрыть ветку (1)
81
Автор поста оценил этот комментарий
Потому что сейчас там стоит мой копирайт :))
показать ответы
352
Автор поста оценил этот комментарий

Про первое у меня другое мнение.

Иллюстрация к комментарию
раскрыть ветку (1)
69
Автор поста оценил этот комментарий
Неплохо )))) От души, но копирайт лучше свой или убрать :)
показать ответы
2
Автор поста оценил этот комментарий

Делфисты возразят!

Иллюстрация к комментарию
раскрыть ветку (1)
8
Автор поста оценил этот комментарий
Вы еще существуете? О_о
показать ответы
16
Автор поста оценил этот комментарий
Сложно быть суперменом, когда тебе два мужика в затылок дышат...
Иллюстрация к комментарию
раскрыть ветку (1)
6
Автор поста оценил этот комментарий

Есть еще вариант без Супермена, если кому нужно

Иллюстрация к комментарию
9
Автор поста оценил этот комментарий

FYI

Иллюстрация к комментарию
показать ответы
55
Автор поста оценил этот комментарий

Минус за первые два. По поводу второго можешь попробовать вот такой пример:

double* p, q;

Ну как? Создал два указателя?

раскрыть ветку (1)
16
Автор поста оценил этот комментарий

Дык третьей картинкой дается пояснение про объявление нескольких переменных на одной строке ;)

показать ответы
2
Автор поста оценил этот комментарий
Чуваки на кроватях случайно не из проджект зомбоид?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

угу, именно :)

8
Автор поста оценил этот комментарий
"*" - не принадлежит к имени типа.
Это всё исходит из типовой системы в голове у программиста.


Так-то в итоге ты же работаешь с переменной pointer, у которой по факту тип - указатель на int, т.е. (int*).


То, что сишный синтаксис при объявлении переменных привязывает звездочки к переменным, а не к типам - это скорее минус языку.


Имхо, лучше не объявлять в строке больше одной переменной (за исключением тривиальных счетчиков или "спаренных" переменных, типа координат) и тогда объявление


int* foo;

int* bar;


вполне нормально ложится в схему, когда тип - указатель на инт, а имя переменной - foo.

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Да, абсолютно верно :)

показать ответы
29
Автор поста оценил этот комментарий

А это является истиной в последней инстанции? Я чаще всего не объявняю несколько переменных на одной строке, потому что мне это не нужно, но часто в алгоритмах нужно дохрена интовых/флоат переменных. Объявлять каждую на отдельной строке - ну такое себе занятие. И вообще, я не об этом, а о том, что указатель скорее относится к переменной, чем к типу. Хотя, можно, конечно смотреть с другой стороны и сказать, что кастовать ты будешь именно так: (int*)p и тут оно уже скорее к типу относится.

раскрыть ветку (1)
4
Автор поста оценил этот комментарий
Если бы что-то было истиной в последней инстанции, то срача не было бы :)
Есть разные нотации со своими плюсами и минусами и есть программисты со своими предпочтениями :)
показать ответы
36
Автор поста оценил этот комментарий

На диету бы вам, господин тролль. Слишком жирно.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Думаю, что в самый раз :)
У большинства начинающих программистов начинается пожар при виде непривычной стилистики кода :)) Ну и конечно же куча аргументов в защиту "своей" ;)

показать ответы
36
Автор поста оценил этот комментарий

В данном случае вы откровенно говорите, что тот или иной вариант оформления неверен, нелогичен, и достоин только осмеяния. И только вараинт на первой картинке правильный. Неужели?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
Исключительно в юмористических целях :) Не стоит воспринимать всерьез )))
показать ответы
1
Автор поста оценил этот комментарий

Наставьте меня, пожалуйста. мне это интересно и я хочу в этом разбираться. Какие сферы актуальны на данный момент? Премного благодарен за уделенное внимание.)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну из основных есть две сферы - Software( Разработка программного обеспечения ) и Gamedev( Разработка компьютерных игр ).

Для написания софта в основном используются языки Java, C#, С++, Objective-C, Python.
Для написания игр используются языки C#, С++, а также игровые движки такие как Unity3D или Unreal Engine, либо более простые конструкторы типа GameMaker или Construct.


Если пока неясно с чего начать, то можно в любом случае начать потихоньку изучать C# или C++ - в любом случае лишним не будет :)

показать ответы
1
Автор поста оценил этот комментарий

@Tinaynox с чего начать изучение программирования?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Зависит от желаемой области примененеия :) Что именно хотелось бы программировать и с какой целью?
показать ответы
1
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Существуют люди пишущие в стиле справа?

Иллюстрация к комментарию
показать ответы
0
Автор поста оценил этот комментарий

а ещё можно так:

std::shared_ptr<Dog> a, b;

и никаких неоднозначностей :)

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

typedef std::weak_ptr<Dog> DogWPtr;
typedef std::shared_ptr<Dog> DogPtr;


DogWPtr dog0;
DogPtr dog1;
Dog* dog2;

3
Автор поста оценил этот комментарий
Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, это так :( Но на Пикабу пока нет возможности указать конкретно для одного поста в сообществе, чтобы он был виден только его подписчикам :(

показать ответы
3
Автор поста оценил этот комментарий

Придётся выйти из тени и написать первый коммент, чтобы найтись))

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Предпросмотр
1
Автор поста оценил этот комментарий

Спасибо огромное! буду стараться. если еще будут вопросы, то можно к вам обращаться?:)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Конечно :)
2
Автор поста оценил этот комментарий
а веб?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
ох, пардон, совершенно точно :)
1
Автор поста оценил этот комментарий

Хорошо. Спасибо Вам большое. Буду осваивать тогда C# и C++. А есть рекомендации по литературе? Мусора то в интернете немало :)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Не знаю даже, попробуйте любую книгу, которая легко читается :) Мне просто в своё время не повезло найти такую ))) Поэтому сейчас не в курсе насчет литературы :)
Можно попробовать пройти мой курс уроков по С++ для начинающих - http://pikabu.ru/story/kursyi_sozdaniya_kompyuternyikh_igr_n...

показать ответы
2
Автор поста оценил этот комментарий

Подчеркивается семантика, что dog - это указатель на объект Dog. Но непонятно тогда, как писать, когда из функции возвращается указатель (имени указателя нет в явном виде).


Dog *dog;
Dog* getMyDog(); // ???
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Хм, еще один плюсик в пользу левого варианта :)

1
Автор поста оценил этот комментарий

@Tinaynox, объясни мне плиз.
почему в некоторых примерах есть такое
int **t
и как я понял из твоего комикса, разницы нет в таком случае:
int* x ; int * x; int *x - это одно и то же?

Спасибо

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это называется указатель на указатель :)
В ячейке памяти лежит адрес другой ячейки памяти, в которой лежит адрес ячейки типа int :)
Да, одно и то же :)

показать ответы
11
Автор поста оценил этот комментарий

Плохой программист пишет код понятный компилятору, хороший - человеку.

Кажется так.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Неплохо сказано :)
0
Автор поста оценил этот комментарий

Всё годное, с чем-то не согласен, но это дело привычки и принятых стандартов, но с [3] уж никак не могу согласиться.
Сначала, как по мне, нужно описывать все приватки и всё, что скрыто и недоступно, а уже после этого описывать паблик методы, которые позволяют с к этому всему обращаться/обрабатывать.
Иначе читаешь "Ага, вот мы можем сетнуть/гетнуть вот эту дрянь. А что это за дрянь? Пошли в конец искать/читать где оно и что оно такое."

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Ну обратное желание - равносильно, поэтому на вкус и цвет :)
29
Автор поста оценил этот комментарий

Я исправил:

Исключительно ради срача :)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ну можно и так сказать :)
Это как отображение восприятия программистом нелюбимого для него стиля :)

0
Автор поста оценил этот комментарий

Что если я скажу тебе, что я из тех, кто пишет std::string? :D
А вообще, если честно, зачем объявлять постоянный указатель? Для всяких "нет явного преобразования из char * в const char *" есть отличная вещь - c_str()

раскрыть ветку (1)
Автор поста оценил этот комментарий

1. Я пишу std::string
2. Экономия времени выполнения :)

показать ответы
14
Автор поста оценил этот комментарий
const char * string

Ммм, классно, особенно если у тебя уже есть класс с таким же названием.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Оооо... Про using namespace std можно запилить отдельную картинку :)

показать ответы
12
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

Есен красен, но тебя никто не лишал собственного мнения и чувства вкуса. :)

58
Автор поста оценил этот комментарий

Несмотря на то что так не принято писать, но:

int *pointer, value; -- это указатель целочисленного типа и целочисленная переменная;

int* pointer, value; -- становится непонятно что такое value - читабельность падает.


"*" - не принадлежит к имени типа.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Ну моё ИМХО, что это все-таки минус синтаксиса языка, поэтому за счет искаженного( с точки зрения компилятора ) кодстайла всё можно привести к понятному и читаемому виду.

27
Автор поста оценил этот комментарий
Совершеннолетие - это как раз когда ты не выёбываешься и пишешь по кодстайлу, принятому в проекте, потому что от унификации проще всем. Просвещение дикарей - уровень студента-первокурсника.
раскрыть ветку (1)
Автор поста оценил этот комментарий

Совершеннолетие - это когда ты сам руководитель проекта и лично выбираешь кодстайл..

показать ответы