Некоторое время я разрабатывал приложения javascript, обычно небольшие сценарии для выполнения простых задач, а также довольно большие и сложные приложения с использованием библиотека base2 Дина Эдвардса для создания псевдоклассических объектно-ориентированных классов с наследованием... в javascript.
Библиотека base2 сослужила мне хорошую службу, главным образом потому, что она позволила мне следовать классической парадигме объектно-ориентированного программирования, с которой я хорошо знаком. Я также знаю несколько других фреймворков, которые можно использовать для создания более надежных и зрелых приложений javascript (backbone.js например). Но у меня всегда есть ощущение, что этот тип библиотеки — это способ «обмана», чтобы создать способ написания кода с использованием принципов, для которых язык на самом деле не подходит.
Я читал о различных способах определения объектов/функций, создания их экземпляров и достижения полиморфизма с использованием прототипного наследования. Это действительно то, как язык работает на фундаментальном уровне, и я чувствую, что должен воспользоваться этим, а не решать, что это раздражает или странно, и пытаться найти способ делать вещи так, как я привык (классический способ OO ).
Итак, глядя на приложения, которые не используют этот тип библиотеки, кажется, что существует так много способов написать ваше приложение, в то время как для традиционных языков общего назначения, таких как Java, C++, ... правильный способ создания ваших приложений кажется более четко определенным. (намного легче отличить хороший код от плохого). Если кто-нибудь спросит меня завтра: «начать разработку проекта X для меня», я понятия не имею, как начать определять и структурировать свои объекты таким образом, чтобы я был уверен, что они не вернутся, чтобы укусить меня позже, когда будет слишком поздно реструктурировать Все это.
Как будет выглядеть скелет профессионального сложного приложения js с использованием прототипного наследования, то есть без использования какой-либо библиотеки для имитации классического объектно-ориентированного программирования, предполагая простой тип приложения MVC, но легко масштабируется до более сложных пропорций. Как определить мои объекты? Как сгруппировать объекты/классы (пространство имен)? Другими словами: как это сделать, не получая беспорядка, в котором никто больше не разбирается?