|
|
This article's tone or style may not be appropriate for Wikipedia. Specific concerns may be found on the talk page. See Wikipedia's guide to writing better articles for suggestions. (September 2009) |
The inner-platform effect is the tendency of software architects to create a system so customizable as to become a poor replica of the software development platform they are using. This is generally inefficient and an example of an anti-pattern.
Examples are visible in plugin-based software such as some text editors and web browsers, which often have people creating plugins that recreate software that would normally run on top of the operating system itself - such as FTP clients and file browsers built to run on top of Firefox. The goal is for it to be possible to do everything without leaving your browser, but the end result of such efforts is simply a recreation of the original platform inside of it - hence the name.
It is normal for software developers to create a library of custom functions that relate to their specific project. The inner-platform effect occurs when this library expands to include general purpose functions that duplicate functionality already available as part of the programming language or platform. Since each of these new functions will generally call a number of the original functions, they tend to be slower and less reliable.
In the database world, developers are sometimes tempted to bypass the RDBMS, for example by storing everything in one big table with two columns labeled key and value. While this allows the developer to break out from the rigid structure imposed by a relational database, it loses out on all the benefits, since all of the work that could be done efficiently by the RDBMS is forced onto the application instead. Queries become much more convoluted, the indexes and query optimizer can no longer work effectively, and data validity constraints are not enforced.
A similar temptation exists for XML, where developers sometimes favor generic element names and use attributes to store meaningful information. For example, every element might be named item and have attributes type and value. This practice requires joins across multiple attributes in order to extract meaning. As a result, XPath expressions are more convoluted, evaluation is less efficient, and structural validation provides little benefit.
Another example are web desktops, where a whole desktop environment - often including a web browser - runs inside a browser (which itself typically runs within the desktop environement provided by the operating system).
See also
References
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)




