Исходные коды каких проектов вы бы посоветовали поизучать начинающему программисту?
Ни для никого не секрет, что для того, чтобы научиться хорошо программировать нужно читать код других людей. Желательно хороший. Это одновременно и приучает к хорошему стилю программирования и вообще помогает в обучении.
Хотелось бы и мне почитать исходные коды проектов средней сложности, т.е. не слишком простые, но и не очень огромные и сложные, чтобы спустя 1-2 часа можно было разобраться как система работает.
Собственно код каких технологий и проектов хотелось бы почитать:
1. Ну в первую очередь это чистый, красивый HTML5/CSS3 например грамотно построенные лендинги
2. JavaScript приложения
3. Сайты или приложения на чистом PHP, без фреймворков
4. Приложения на Yii2
5. Приложения на Zend Framework
6. Грамотно написанные сайты на WordPress
7. Грамотно написанные приложения на Joomla
8. Страницы или сайты на чистом Bootstrap
9. Сайты с хорошим применением JQuery
10. Приложения на Ruby и Ruby on rails
Возможно я что-то написал глупо, не обессудьте. Если кто-то из вас может посоветовать что-то из этого списка, буду очень признателен.
Всегда удивлял такой "слишком академический" подход к изучению программирования.
С трудом верится, что автор сперва составит список, а затем будет сосредоточенно и целенаправленно изучать чужие исходники. Разве можно научиться программированию рассматривая чужой код? Нужно писать свой!
Лично я чужие исходники наизучался вдоволь, когда искал на гитхабе кусочки для своих проектов. Чего и Вам советую. Начните делать интересный вам проект. Заходите на гитхаб, ищите по выбранным языками/технологиям проект с "пятью звездами". Пока будете внедрять их в свой проект - наизучаетесь!
Во-первых, чтобы писать свой, как вы говорите, нужно знать как надо правильно и красиво писать, а не абы как, во-вторых, уметь читать и разбираться в чужом коде - это очень важный момент на мой взгляд. Во скольких проектах мне придется поучаствовать за свою карьеру? Сколько чужого кода прочитать чтобы влиться в работу? Так что мне кажется сложно переоценить важность чтения и умения читать чужой код. До определенной степени конечно, без фанатизма, как вы говорите и свой писать конечно тоже нужно.
А по поводу академического подхода. Я знаю много ребят, которые толком не разобравшись в технологии/языке программирования/и т.д. начинали ваять что-то, толком не понимая, что делают, хватая куски кода чужих проектов также основательно не разобравшись в нем и к скольким это приводило проблемам. Так что я не вижу в этом тоже ничего плохого.
И почему это вам с трудом верится, что я так поступлю? Запросто. Составлю список и вечером, скажем перед сном или пораньше почитать, по разбираться не спеша, без всяких проблем.
EvgMul: Чтобы писать свой код хватит редактора и компилятора (хотя с IDE удобнее). Код не обязан быть красивым, первое время. Чужой код частенько непонятен, и красоту его вы один фиг не оцените. Некоторые моменты крайне тяжело понять, не зная мотивов. Некоторые лучшие практики иногда используются по привычке в проектах, не совсем для этого предназначенных.
EvgMul: чужой код априори не может быть правильным и красивым. Это я конечно утрирую, но красивый и правильный код вы можете только в книжках найти, в реальности же все обычно куда прозаичнее.
Не соглашусь. Читать плохой код наверное нужно, иначе сложно будет оценить хороший. Но я считаю, что намеренно его читать совсем не стоит, за свою карьеру я уверен, что встречусь с ним не раз сам того не желая.
Oxoron: как раз поэтому и задан тут вопрос. Какие на ваш взгляд есть проекты с хорошим кодом, потому что я в виду своего не профессионализма пока отличить один от другого не могу.
EvgMul: хороший код является хорошим по какой-то причине. Код с хорошо названными переменными легче читается, поэтому он хороший; код, в котором методы изменяют передаваемые параметры - плохой, потому что при чтении эти изменения неявные. Код без перехвата исключений - плохой, потому что программа падает. Код без волшебных констант хорош, потому что читается и изменяется проще. Хороший код - следствие.
Еще один момент: нельзя оценить всю прелесть IoC-контейнеров, если не оценил DI, которое трудно оценить не познав модульное тестирование (либо не прозанимавшись развитием проекта в течении пары лет). Всему свое время.
Еще момент: читая код, мы иногда видим следствие, но не видим причин. В итоге мы не знаем, хороший код перед нами, или нет.
Еще момент: то, что подходит в одном случае, не подойдет в другом. Для больших проектов со многими связями в предметной области может подойти BDD. Для небольшой консольки это будет лишь неоправданное усложнение.
Еще момент: часто нужен код не красивый, а рабочий, и быстро написанный. Красота требует жертв, в нашем случае времени. Как-то на хабре один товарищ пропагандировал "Модульно-костыльную разработку", когда интерфейсы делают грамотными, а реализацию - костыльную. Этот товарищ явно ценил время.
Короче, сама идея "почитать красивый код" не слишком удачна. Лучше почитай "Совершенный код" Макконнелла. Классическая книга про хороший\красивый код, с пояснением, почему именно код красивый. А перед этим "Рефакторинг" Фаулера (который чуть проще).