У меня нет хороших рекомендаций для проектов, подобных SAP, в частности, но в целом лучшие примеры, которые можно использовать для таких вещей, - это устоявшиеся проекты с открытым исходным кодом. Все остальное, так или иначе, будет «игрушечным» примером и будет упрощено и очищено. Именно «очищение» делает его наиболее нереалистичным - одна из действительно важных вещей, которая отличает большие программные проекты реального мира от примеров из университетов, заключается в том, что реальный мир грязный, а требования реального мира грязные, а сотрудничество между многие люди с не совсем одинаковыми приоритетами беспорядочные, и реальные программные проекты должны адаптироваться и процветать в этом беспорядке.
В ответ на ваши конкретные вопросы, однако:
1.) Делать вещи по модульному принципу. Это означает, что у вас есть что-то, что вы можете протестировать и работать с ним, как только закончите работу с первым модулем. Это особенно важно, когда вы учитесь, потому что (а) у вас, вероятно, не будет времени, чтобы фактически закончить все это, (б) вы многому научитесь, написав первый бит, который вы захотите применить в будущем биты, а затем вы, вероятно, захотите переписать первый бит, и (c) вы узнаете еще больше из , используя первый бит.
2.) Существует множество мнений по этому вопросу, а также множество статей и книг в Интернете. Я не могу ответить на это в ответе здесь (за исключением того, что в некоторых случаях попытка представить его ООП-способом является неправильной парадигмой программирования - будьте осторожны, чтобы не слишком ограничивать ответ заданным вопросом!); правильный ответ - найти вещи для чтения и провести несколько дней за их чтением.
3.) Вас не волнует такая проблема производительности. Успешные программы были написаны в обеих формах. Вы заботитесь о том, что научит вас больше всего, и с чем вам удобно работать. Либо один должен быть в порядке. Вы, вероятно, найдете больше частей с открытым исходным кодом для просмотра с помощью PHP и C ++.