Category
page 1Programming principles
black box
system where only the inputs and outputs can be viewed, and not its implementation
encapsulation
language mechanism in programming languages that allows external code not to care about the internal workings of an object
KISS
acronym for "Keep it simple, stupid"; design principle
SOLID
In object-oriented programming, SOLID is a mnemonic acronym for five principles intended to make source code more understandable, flexible, and maintainable. Although the principles apply to object-oriented programming, they can also form a core philosophy for methodologies such as agile software development and adaptive software development.
cohesion
degree to which elements within a module belong together
don't repeat yourself
software development principle with the goal of reducing repetitive software patterns, and replacing them with abstractions that use data normalization to avoid redundancy
coupling
in programming, the degree of interdependence between software modules
single responsibility principle
computer-programming principle that states that every class in a computer program should have responsibility over a single part of that program's functionality, which it should encapsulate
open/closed principle
a computer-programming principle that states that software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification
Liskov substitution principle
object-oriented programming principle stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S without altering any of the desirable properties of the program (correctness, etc.)
separation of concerns
solution approach where the problem is broken down into parts that can be solved independently of each other, by separating the what from the how
inversion of control
software programming technique in which general framework code calls into business-logic subroutines
code reuse
use of existing source code to build new software
General responsibility assignment software patterns
Guidelines in object-oriented design
Zen of Python
collection of guiding principals for python programming language
Law of Demeter
guideline for object-oriented programming: each unit should have only limited knowledge about other units (only those closely related to the current unit)
dependency inversion principle
principle that result in a specific form of decoupling of software modules that results in reversing of the dependency relationships established from high-level, policy-setting modules to low-level, dependency modules
principle of least astonishment
principle in computer system design
You aren't gonna need it
principle of extreme programming that states a programmer should not add functionality until deemed necessary
interface segregation principle
states that no client should be forced to depend on methods it does not use
information hiding
principle of segregation of the design decisions in a computer program that are most likely to change, thus protecting other parts of the program from extensive modification if the design decision is changed
defensive programming
form of defensive design intended to ensure the continuing function of a piece of software under unforeseen circumstances
Ninety-ninety rule
humorous aphorism in computer programming
worse is better
the idea that quality does not necessarily increase with functionality
loose coupling
system in which each of its components has, or makes use of, little or no knowledge of the definitions of other separate components
Booch method
developed by Grady Booch
command–query separation
principle that every method should either be a command that performs an action, or a query that returns data to the caller, but not both; asking a question should not change the answer
rule of three
computer programming refactoring rule of thumb
discoverability
Discoverability is the degree to which something, especially a piece of content or information, can be found in a search of a file, database, or other information system. Discoverability is a concern in library and information science, many aspects of digital media, software and web development, and in marketing, since products and services cannot be used if people cannot find it or do not understand what it can be used for.
Zero one infinity rule
software design rule
The Power of 10: Rules for Developing Safety-Critical Code
coding guidelines by Gerald J. Holzmann
composition over inheritance
software design pattern
abstraction principle
principle for avoiding duplicate information and effort in software engineering