Некоторое время назад я задал вопрос на SO о чем-то, написанном на C ++, но вместо того, чтобы получить ответ на имеющуюся проблему, комментарии сошли с ума по моему стилю кодирования, даже когда я указал, что это кусок кода WIP и что я намеревался очистить его позже, когда у меня был запущен базовый вариант. (Я получил так много отрицательных голосов, что решил поставить вопрос, так как моя репутация на SO уже почти ужасна)
Это заставило меня задуматься, почему люди придерживаются такой жесткой позиции "ты нуб, иди нахуй сам". Меня обвиняли в написании C ++, как будто это Java. Что-то, чего я не могу понять, и это все еще сбивает меня с толку.
Я программирую на многих языках ООП уже несколько лет, хотя и с перерывами. Я выбираю язык для использования с точки зрения доступных библиотек и оптимальных сред выполнения для работы под рукой. Я использую шаблоны проектирования в коде ООП, и я совершенно уверен, что мое использование шаблонов является разумным, и что с точки зрения ОО я могу придерживаться своего. Я понимаю набор инструментов ООП, но предпочитаю использовать инструменты только тогда, когда я считаю, что это действительно необходимо, а не просто использовать хитрый трюк, чтобы продемонстрировать мои навыки кодирования. (Что я знаю не на высшем уровне, но я думаю, что не на уровне n00b).
Я создаю свой код, прежде чем написать одну строку. Чтобы определить тесты, я перечисляю цели определенного класса и критерии теста, которых он должен придерживаться. Поскольку мне проще создавать диаграммы последовательности, а затем писать код, я решил написать свои тесты после того, как интерфейс станет очевидным.
Я должен признать, что в фрагменте кода, который я разместил в вопросе, я все еще использовал указатели, а не умные указатели. Я использую RAII, когда могу. Я знаю, что правильный RAII означает защиту от нулевых указателей, но я работаю постепенно. Это была незавершенная работа, и я собирался почистить ее позже. Этот способ работы был решительно осужден.
На мой взгляд, я должен иметь рабочий пример, чтобы понять, является ли базовый вариант жизнеспособным способом мышления. Мне также кажется, что очистка кода - это то, что типично для фазы рефакторинга Agile, после того, как базовый случай был доказан. Я должен признать, что, хотя я постепенно получаю стандарт Cxx, я предпочитаю использовать то, что я понимаю, вместо того, чтобы рисковать использованием концепций, которые мне еще предстоит освоить в производственном коде. Я пробую новые вещи время от времени, но обычно в игровых проектах, которые у меня есть, только для этой цели.
[править] Я хотел бы уточнить, что предложение комара [1] не появилось в поиске, который я проводил до того, как начал задавать свой вопрос. Однако, хотя его предложение действительно охватывает один аспект вопроса, вопрос, с которым он связан, не отвечает сути моего вопроса, а лишь является его частью. Мой вопрос больше об ответе, который я получил на мой стиль кодирования и профессиональные аспекты обработки различных стилей кодирования и (очевидных) уровней мастерства. С моим предыдущим вопросом о SO и его ответом как наглядным примером. [/редактировать]
Тогда возникает вопрос: зачем издеваться над тем, кто не использует ваш стиль кодирования?
Вопросы / подразделения под рукой для меня:
- Почему было бы плохой практикой программирования использовать более подверженный ошибкам код в ситуациях прототипа, если рефакторинг впоследствии делает его более устойчивым?
- Как может программа, написанная на C ++, быть похожей на Java? Что делает его плохой программой (учитывая, что я указал намерения текущего стиля и запланированную работу по улучшению?)
- Как бы я был плохим профессионалом, если бы решил использовать конструкцию, которая используется в определенной парадигме программирования (например, ООП / ДП)?
int
переменными для отслеживания фактической длины.