@Venesuella
BlackJack и ...

Как научиться грамотно писать код?

Ребятки, подскажите как грамотно научиться писать код? Работаю в фирме где ИТ отдел не особо большой и непосредственного наставника - Team Lead нету, есть просто менеджер проектов, который никак с разработкой не связан. И стараемся писать код грамотно на сколько это возможно исходя из опыта, но все равно как то криво получается. Дак вот вопрос, как научиться писать грамотно код, и грамотно разрабатывать приложения в такой вот ситуации, еще раз повторюсь - Team Lead нету, нету того человека который был пинал за плохо написанный код(((
  • Вопрос задан
  • 1226 просмотров
Пригласить эксперта
Ответы на вопрос 7
AxisPod
@AxisPod
Прежде чем писать грамотно код, надо грамотно разрабатывать архитектуру. Почитайте для начала Гради Буча. Разберитесь с шаблонами проектирования. Делайте друг у друга code-review максимально придираясь к коду. А дальше пойдет.
Ответ написан
Visual Studio -> Анализ кода
d48fb82a6ccf4c39be08cc9a969411e1.pngПрактическое руководство Настройка анализа кода для проекта управляемого кода. Только не включайте все правила сразу, предупреждений будут сотни, включайте по одному, как исправите недочеты (внимательно читая предупреждения на сайте Microsoft), применяйте другие, и так до включения "All".
Мне эти правила понравились (в каждой компании свои требования к коду), теперь использую везде где пишу сам с нуля.
Можно использовать StyleCop, но он вроде заброшен, форк есть для Roslyn, но этих хватит что бы научить команду соблюдать практику Microsoft.

Шаблоны проектирования бесплатная книга, GOF для .NET от сертифицированных специалистов.

Я понял что этот путь бесконечный, в книгах пишут что люди смотря на свой код написанный год назад "плачут/смеются, говорят - кто это написал." :)
Испытываю тоже самое.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
А без пинков никак? Практикуйтесь, выискивайте узкие места проекта. Учитесь пользоваться профилировщиками всех мастей. Почитайте "Совершенный код" Макконнела. Ну и можете описать что именно считаете кривым и как вы считаете должно быть
Ответ написан
nicosha
@nicosha
VOIP Developer, DEVOps
Можно поучаствовать в каком нибудь, интересном для вас, OpenSource проекте.
Ответ написан
Комментировать
@liveinskydreams
Программист 1С, системный администратор Win, nix
Смотря какой код. Под какие задачи.
Если вы мастырите костыль в провальном проекте, то каким бы элегантным код ни был, это будет в пустую потраченное время.(ИМХО) Если же вы разрабатываете часть или весь проект, который по некоторым качествам вам кажется перспективным(ну или как минимум не стыдно показать в портфолио), то без ментора (тимлида) грамотно решения не построить, пока у вас самого не будет достаточно опыта и знаний.
Дело в том, что просто грамотно писать код не достаточно.
Изначально необходимо спроектировать решение, подвергнуть его критике(желательно в команде или авторитетным специалистом со стороны), исправить недочеты и только затем приступать к следующему шагу, который все еще так же не является кодингом.
Выбираются инструменты реализации. Если говорить о веб-разработке, то это платформа для решения (ОС и ее сервисы), это разного рода библиотеки и заготовки (фреймворки\CMS), и затем уже язык программирования.
Принимая к учету архитектуру проекта, особенности среды исполнения и имеющиеся готовые решения(повторюсь: библиотеки, фреймворки, плагины,...), уже становится понятным где и что необходимо дописать, переписать, написать с нуля..
То есть, с самого нуля чаще всего, проекты не поднимаются. Мало сейчас встретишь в серьезной разработке, что специалист открывает C++, на втором мониторе notepad и понеслась. Все с нуля. Зачем изобретать велосипеды, если большие куски решений уже давно реализованы и оптимизированы. И лежат в открытом доступе (OpenSource) бери и пользуйся.
В любом случае, вот так, с наскока, не постичь всего "дзена". Но это не значит, что этого вообще никак невозможно сделать.
Наставник, ментор, он точно нужен. Без него никак. Без него процесс обучения займет очень очень долгое время, много шишек на вашем лбу и "усаженная" репутация перед теми заказчиками, на проектах которых вы тренировались и пробовали. Если у вас есть совесть, то и самооценка ваша пострадает. Зачем вам это?

А для начала, чтобы с ментором разговаривать предметно, можно брать и читать исходники публичных опенсорс проектов тех же. Изучать их. Не просто понять функционал, расшифровать алгоритмы, а задаться вопросом почему было сделано именно так и обязательно найти на него ответы. Почему был задействован тот или иной инструмент, сорс. Зачем разработчики вынесли те или иные функции в паблик, а некоторые классные, крутые и супер-полезные так и оставили в локал. И прочие другие..

Пробуйте строить свои, пусть для начала небольшие, проекты. Просите помощи у более опытных коллег в оптимизации структуры проекта\кода. Активно общайтесь со своим комьюнити на форумах. Как бы то ни было, но стилистику кодинга и ведения проектов вообще, вам сможет передать только человек. Не мануал. Не книга, хотя и без них никак.

В общем, ищите ментора, ментора ищите. Он ваш проводник в мастерство. Чтобы ему было интересно с вами возиться - отслюнявливайте ему часть прибыли с тех проектов, которые он будет курировать. Это приемлемые условия и честная сделка. Благодаря ему вы сможете взять и завершить проект, получить от этого прибыль, а благодаря вам его труды будут вознаграждены в ден. знаках.
Ответ написан
Комментировать
copist
@copist
Empower people to give
Ну, может быть нанять лида или ментора - есть такие конторы. Будут ревьюить код и носом тыкать в неудачные места. Хочешь, я помогу.
Контакты copist.ru/about
Ответ написан
Комментировать
@antytoto
Помогаю doka.guide
Читать чужой или свой старый код иногда действительно может стать проблемой. Если работаете в команде, то стоит определиться с чёткими правилами, по которым вы будете работать. Когда вся команда начнёт придерживаться стандартов, будет проще использовать и исправлять за командой.

В моей компании используем гайд, написанный для AirBnB - https://github.com/airbnb/javascript
Ещё мы используем БЭМ для создания удобной инфраструктуры - https://ru.bem.info/

Сейчас многие компании проводят хакатоны, там под руководством наставника объединяют в команды и вы сможете получить полезный опыт. Ещё много положительного опыта могут дать курсы, типа Яндекс.Практикума, там тоже есть команды, ревьюер и наставник. После обучения, сможете успешно применять полученный опыт и удобно организовать работу в команде.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы