Coding Methodology & Paradigms
Clear methodology and coding paradigms are vital to developing solutions that are stable, coherent and sustainable. The following is an overview of some common approaches and ideals we implement in our custom development work. When dealing with third-party software, we're largely at the mercy of the establishment, yet we do our best to keep it neat and optimal.
OOP or Object-Oriented Programming is a software approach where, in contrast to more linear procedural programming, each concern is encapsulated into a separate dynamic object with its properties. OOP facilitates well-structured and concentrated development, and helps minimize the side-effects resulting from modifications to any given aspect of the application.
MVC System Architecture
MVC or Model-View-Controller is a architectural paradigm where the application is divided into data management (model), user interaction (controller), and presentation (view). This basic separation of concerns creates the basis for coherent application structuring and, in particular with more complex applications, helps prevent the code's growing into an absolute mess.
Decoupling & Modularity
Plug-and-play components enable seamless customization and evolution. Decoupling is seen when, for example, a single CMS back-end can accommodate a number of independent front-end solutions. Modularity is more obviously at play with application plugins, but also is useful on a more micro-scale, e.g. with minimizing code imprint or transplanting code features.
Abstraction & Minimalism
Where several functions share a pattern, it is wise to address the concerns of the underlying pattern first, and only then proceed into creating specific layers that cast the abstract into operation in distinct domains. Solid ontology of functional objects, with code composition via inheritance, helps minimize duplicate work and correct emerging problems at their roots.
APIs and REST Interfaces
Application interfaces provide interoperability between platforms. The basic HTTP methods seen in REST architecture provide clean and consistent interfaces for CRUD (Create-Read-Update-Delete) operations. The ideal of uniform interfaces is also reflected in our internal code conventions, where types of methods are consistently named and provide predictable responses.
Re-Inventing the Wheel
Not to re-invent the wheel, the saying goes. We do create new wheels from a scratch, once and as abstract models to individuate as necessary. If an available implementation is a heavy wheel with sticky and resource-hungry bells and whistles that'd take a day to strip and patch, where it's an afternoon for us to create a decent little wheel from a scratch, our choice is obvious.