Всем привет. Я новичок, сейчас дописываю проект, многопоточный чат на С++.
Код разросся до 2к строк и я просто схожу с ума! Вроде все работает, все более менее оптимизировано, но мне все равно кажется, что мой код ужасен. ПРОСТО УЖАСЕН.
Да даже просто код глаз не радует, кажется неуклюжим.
Я понял, что у меня слишком много зависимостей, и скорее всего они неправильно реализованы. По сути, есть данные, и есть методы для обработки этих данных. Так вот мои методы, видимо, вообще неправильные... Я подумал, что дело в архитектуре, в организации данных и доступа к ним, в отношениях между объектами.
Отсюда этот вопрос. Мне нужен любой материал, чтоб уметь хотя бы на базовом уровне продумывать архитектуру программы. Извините за эту писанину, просто хочется чтобы меня точно поняли!
Заранее спасибо!
Вроде все работает, все более менее оптимизировано, но мне все равно кажется, что мой код ужасен. ПРОСТО УЖАСЕН.
В принципе, не существует идеального кода, просто банально потому, что насчет этого существуют как минимум два разных мнения.
Что бы проверить, насколько код ужасен - внедрите новую фичу в ваш проект - если это сделать сложно, без изменения нынешней структуры, тогда вам нужен Рефакторинг, что как бы и подразумевает, что вы будете улучшать именно архитектуру. Рефакторинг можно применять до бесконечности, наделяя архитектуру новыми плюсами и новыми минусами.
Практический опыт важнее теории. По крайней мере изучение архитектуры уже предполагает наличие опыта
Что бы проверить, насколько код ужасен - внедрите новую фичу в ваш проект - если это сделать сложно, без изменения нынешней структуры, тогда вам нужен Рефакторинг
Самый лучший совет! Спасибо!
В принципе, не так уж и сложно добавить) Но все равно возникают некоторые зависимости.
Открою секрет )
Пишите тесты. Тесты невозможно написать на плохую архитектуру. Делая новый класс, думайте как будете его тестировать. У вас сразу появится стремление выполнять половину принципов SOLID. (даже если вы их не знаете). Стремление сделать классы лаконичными. С хорошим интерфейсом. Стремление разбивать приложение на компоненты.
Про это много есть статей. тестируемость и архитектура.
Затем можно почитать какие-нибудь книжки. Для начала Роберта Мартина PPP - дословно не помню) но три пи легко можно найти и перевод. (он для C# вроде, но книга классная)
Попробуйте TDD. В работе возможно она не будет нужна, но ухватить идею как создается хороший интерфейс можно.
Затем постоянно себе напоминать, что код пишется для программиста (не для компилятора). Т.е. код это объяснение другому (более тупому))) программисту как это работает. Из этого: хорошие названия - 80% успеха. Остальное архитектура и проч.
Читать код. Свой, чужой, бест практики.
То что свой код бесит - это нормально. Плохо если старый код нравится - значит рост прекратился. Это тревожный звоночек.
Итого.
1)Начинайте свой рост с умения писать тестируемый код.
2) когда почувствуете жжение нехватки опыта в конкретных механизмах (паттернах, принципах) начинайте читать книги.
3) пишите код для тупых программистов (это скромность)
4) быть вне зоны комфорта это нормально.
5+) Почитывайте книги Чистый код Мартина и Совершенный Код Макконнелла (те главы которые вам "заходят")
Удачи в умении сделать сложное простым.)
Дайте Ваш код почитать другому программисту. Если он не поймет о чем там, и скажет что "можно было бы и лучше", то тогда да, тогда копрофекальный код. Но если у него не возникнет особо сложностей - то не переживайте, можно жить.