Я чувствую, что у меня хорошо получается писать код по частям, но мои проекты действительно ужасны. Вопрос в том, как мне улучшить мой дизайн и, в свою очередь, стать лучшим дизайнером?
Я думаю, что школы и колледжи хорошо учат людей тому, как стать хорошими в решении математических задач, но давайте признаем тот факт, что большинство приложений, создаваемых в школе, обычно имеют длину около 1000 - 2000 строк, что означает, что это в основном академическое упражнение. которая не отражает сложность реального программного обеспечения - порядка нескольких сотен тысяч или миллионов строк кода.
Именно здесь я считаю, что даже такие проекты, как topcoder / project euler, также не окажут особой помощи, они могут обострить вашу способность решать математические задачи - но вы можете стать академическим программистом; кто-то, кто больше интересуется красивыми, чистыми вещами, кто совершенно не заинтересован в повседневных повседневных вещах, с которыми сталкивается большинство разработчиков приложений.
Итак, мой вопрос: как мне улучшить свои дизайнерские навыки? То есть умение проектировать малые / средние приложения, которые уйдут в несколько тысяч строк кода? Как я могу получить навыки дизайна, которые помогут мне создать лучший редактор html или какую-нибудь графическую программу, например gimp?
Ответы:
Единственный способ стать действительно хорошим в чем-то - это попытаться, эффектно потерпеть неудачу, повторить попытку, повторить неудачу чуть реже, чем раньше, и со временем выработать опыт, позволяющий распознать причины ваших неудач, чтобы вы могли впоследствии управлять потенциальными неудачами. Это так же верно, как учиться играть на музыкальном инструменте, водить машину или заработать серьезный PWN-возраст в своем любимом шутере от первого лица, так же как и изучать любой аспект разработки программного обеспечения.
Здесь нет настоящих ярлыков, но есть вещи, которые вы можете сделать, чтобы избежать проблем из-за того, что вы набираете опыт.
источник
Ну, для такого вопроса нет золотого яблока, и я чувствую, что, возможно, каждый сам кодер должен найти то, что ему подходит. Во всяком случае, это мой дубль.
Вы могли бы читать книги на эту тему. Великие книги. Фантастические книги. Но я считаю, что эти книги помогут вам только после того, как вы попытаетесь создать и спроектировать приложение - и потерпели неудачу.
Для меня это все о опыте. Когда я начинал как новичок, я читал книги о дизайне. Я не понимал большую часть содержания тогда. Когда я начал работать и сам должен был разрабатывать приложения, я делал очень грязные приложения. Они работали, но их было трудно поддерживать. Потом я снова прочитал эти книги - и на этот раз я лучше их понял.
Теперь я продолжаю делать новые ошибки и учиться на старых.
источник
Прекратите проектировать и научитесь реорганизовывать код. Постепенное развитие с непрерывным и агрессивным рефакторингом приведет к гораздо более чистому конечному продукту, чем любой предварительный дизайн.
источник
Конечно, читайте о шаблонах, но прежде всего читайте об анти-шаблонах. Признание анти-паттернов важно, и легче понять, почему что-то не должно быть сделано таким образом, чем почему это должно быть.
См. Например, http://sourcemaking.com/antipatterns/software-development-antipatterns .
Напишите код, чтобы его можно было быстро скорректировать в случае изменения требований (что очень часто встречается в производственной среде).
Будьте супер-скептически настроены по поводу добавления «еще одного маленького хака». Еще один здесь, еще один там, и код становится неосуществимым.
Оцените открытый / закрытый принцип .
Пишем тесты (как в TDD). Они заставляют вас продумывать свой дизайн еще до того, как вы его на самом деле внедрили.
Просмотрите код проектов с открытым исходным кодом (то есть разумных размеров). Раньше я удивлялся - обычно - видя так много уровней абстракции. Теперь я понимаю, что это не искусство ради искусства, есть причина, почему это делается именно так.
источник
Один принцип, который я считаю очень важным для хорошего дизайна, - это декомпозиция: если класс слишком большой (больше, скажем, 300-400 строк кода), разбейте его на более мелкие классы; если метод слишком большой (скажем, более 50 строк кода), разложить его; если проект содержит более 50 классов, разложите его.
Ключ заключается в том, чтобы оценить размер вашей системы и построить несколько уровней абстракции (например, подсистема, приложение, проект, модуль, класс, метод), которые позволят вам разбить ваш код на понятные блоки с четкими отношениями между ними и несколькими зависимостями.
источник
Трудно сказать, что мы на самом деле говорим о способности абстрагироваться, а не создавать лучший код, но две вещи сделают вас лучше, а одна вещь сделает вас счастливее:
"Лучше"
А) Найдите лучшего дизайнера, которого вы можете, и спаривайте / разрабатывайте дизайн вместе. Попросите их объяснить, что они думают, когда они решают проблему, не соглашайтесь на «это просто кажется правильным» и продолжайте копать. Этот процесс поможет и наставнической стороне
Б) Представьте все как отдельных актеров и разговоры между ними. Каждый из участников должен иметь одну роль / ответственность, и группы из них управляют различными системами. Если этот разговор работает, и каждый актер чувствует себя связным и сплоченным, то вы на своем пути.
И "счастливее"
C) Если вы старались изо всех сил, и это все еще не происходит, то нет ничего плохого в том, чтобы признать, что некоторые люди не могут что-то делать. Вы можете написать жесткий, блестящий код, но никогда не сможете проектировать или проектировать. И что? Я не могу заниматься физкультурой из-за ириски, у меня плохая внешность, и моя машина никогда не будет лучше, чем в среднем. Наслаждайтесь тем, что у вас хорошо получается.
источник
По моему личному опыту читайте чужой код, это хороший источник "вдохновения". Я имею в виду попытаться понять замыслы других людей и спросить себя, почему он / она так поступает?
Вы можете найти множество проектов с открытым исходным кодом для исследований.
в любом случае вам нужна практика.
источник
Не живи в страхе
Стремитесь к простоте
Слушайте своих пользователей
Попробуйте много идей
Создай что-то, а потом сделай
Работайте над вещами, которые повышают ценность, оставляйте вещи, которые не
источник
Учитесь задавать правильные вопросы. Чаще всего вы улучшаете свой дизайн, рассматривая проблему под другим углом. В частности, это поможет вам отказаться от сосредоточения на решении стоящей проблемы и больше искать решения, которые решают множество связанных проблем.
источник