Почти каждый продвинутый программист говорит, что очень полезно читать код других профессионалов. Обычно они советуют open source.
Вы читаете это или нет? Если да, то как часто и как проходит процедура чтения кода? Кроме того, новичкам немного сложно иметь дело с SVN - кучей файлов. Какое решение?
источник
У вас есть несколько слоев головоломки. Сначала начнем с высокого уровня, так сказать с высоты птичьего полета. После того, как вы проверите проект, в структуре каталогов будет множество файлов. Это то же самое, смотрите ли вы на открытый исходный код или закрытый исходный код (исходный код в конце концов является исходным кодом). Итак, начнем с этого:
Это требует практики, но это определенно выполнимо. Чем больше вы знаете о библиотеках и инфраструктурах, которые использует приложение, тем больше вы знаете, как должен быть организован код и где искать ответы на конкретные вопросы. Некоторый код немного сложнее следовать, особенно если он довольно косвенный. Вот почему вам нужен карандаш и бумага. В конце концов в вашей голове гаснет лампочка, и вы ее получаете. Вот когда чтение остального кода имеет гораздо больше смысла.
источник
Это не чтение, как вы читаете роман, а скорее как чтение справочника. Хороший способ - это выбрать недавно исправленную ошибку из сообщения о регистрации, выполнить анализ изменений и прочитать соответствующие части, пока не поймете проблему и решение. Обнародованные уязвимости - это забавные ошибки, потому что на форумах их много обсуждают. Затем выберите один из жучков «низко висящие фрукты» в трекере и читайте, пока не поймете, как это исправить самостоятельно. Большинство специалистов по чтению кода делают это случайно в процессе исправления ошибок или добавления функций.
Обычно лучшие примеры кода едва заметны. Вы сразу поймете их, не прочитав их более одного раза. Они делают его похожим на то, что писать его было чрезвычайно легко, хотя этот хороший код обычно проходит через множество черновиков. Это порождает парадоксальное ощущение, что, конечно, данный код является очевидным способом сделать это, даже если это не первый способ, о котором вы подумали.
Когда вы сталкиваетесь с подобным кодом, постарайтесь понять понимание, которое вошло в его написание, и принципы проектирования, так что, когда вы окажетесь в подобной ситуации в будущем, вы можете надеяться применить те же принципы.
источник
Один трюк, который я часто использую при чтении какой-либо сложной функции, заключается в том, чтобы начать преобразовывать код в нечто более читаемое без изменения логики.
источник
Как тяжело иметь дело с «кучей файлов»? Он не отличается от того, когда вы пишете свой собственный код, за исключением того, что вы не обладаете предварительными знаниями о его организации, если он не задокументирован.
Если вы, как заявленный программист, не можете понять структуру проекта из «набора файлов», либо это крайне плохо организованный проект, либо вы неумелый программист (или, в крайнем случае, оба).
Начните читать, попробуйте найти некоторые точки входа или другие важные классы / методы, а также понять, как все это происходит вместе. Не будет мгновенным, займет время, но может быть сделано, даже если нет документации вообще.
источник
Лучшее, на что вы можете надеяться при чтении кода другого проекта, будь то API или часть программного обеспечения, это то, что переменные, функции и имена макросов не имеют двусмысленных сокращений или названий, чтобы вы могли понять их намерения.
Но, кроме этого, для того, чтобы погрузиться в сложный код, требуется приличное количество знаний, разбросанных по языку, методам программирования, а также о цели самого кода.
В настоящее время я пытаюсь понять, как Lua делает что-то из этого волшебного, но я подхожу к тому моменту, когда многие идентификаторы названы неопределенно и довольно сокращенно, так что я не могу понять, какая строка пытается чтобы сделать то, что я знаю, нужно сделать в какой-то момент в коде функции ... Частые однобуквенные переменные и довольно сокращенные имена макросов / функций делают мою голову.
источник
Посмотрев на «Сначала начните с высокого уровня, с высоты птичьего полета», когда @Berin Loritsch предложил, вы можете искать юнит-тесты и / или интеграционные тесты, если таковые имеются.
Юниттесты интересно посмотреть, как (api-) детали работают.
Обычно интеграционные тесты дают хороший обзор бизнес-процессов.
источник