Programming terms
I often had trouble reading complicated explanations about some terms and the list here tries to make a definition that can be understood by normal human beings without theoretical mathematics and other higher level skills.
Letter | Term | Meaning |
---|---|---|
"A" | ACID | Atomicity, Consistency, Isolation, Durability. If a Database follows ACID rules then the operation will success and data will be stored or the operation will fail and the database remains in a safe state. Concurrent operations are handled transparently by the database. More |
"A" | Amdahl's Law | Law used to predict the maximum possible performance speedup when adapting programs to use more processors. More |
"C" | Coupling | Objects or components are tightly coupled if they highly depend on each other what hinders their reuse and extendabilty. More |
"D" | Demeter's Law | or principle of least knowledge to avoid coupling More |
"D" | DRY principle | Don't Repeat Yourself More |
"K" | KISS principle | Keep It Simple, Stupid! Avoid unnecessary complexity. More |
"R" | Reentrancy | A routine is said to be reentrant if while one thread is running the code, another thread can enter and run also the routine safely. Usually involves not using static variables or calling only reentrant functions. More |
"S" | SOLID principle | Single responsibility, Open/closed, Liskov substitution, Interface segregation, Dependency inversion principles More |
closure
Example: a function declares another function inside itself that uses its local variables. The inner function + local variables is called closure. More
code metric
A quantitative measure of a characteristic of the software source code. A simple metric is the amount of lines, or the ration comments/lines of code
Fluent interface
A readable way to cascade and transfer a context to subsequent method calls. More
GRASP
General Responsibility Assignment Software Patterns More
immutable
An immutable object cannot be modified after creation. More
Kerkhoffs' principle
A cryptosystem should be secure even if everything about the system, except the key, is public knowledge. More
lambda expression
Description of a function by mean of a statement binding parameters to an expression. For example: (x,y) => x*y
defines an anonymous function that returns the product of the two arguments. This is often used to define delegates in a more readable way.
Liskov substitution principle
A derived class shall behave in the same way than the base class (keeping same semantics). More
Mc Cabe complexity
A code metric representing the amount of decisions taken by a piece of code. Having complex code makes the maintenance and testing of that code harder and costly. Here is a small drop-in tool that computes metrics for you: ACQC metrics.
OCP: open/closed principle
"software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification" More
overloading
A derived class overrides a base class virtual method, the implementation is replaced by the derived one, this is done at run-time.
overriding
The same method has different implementations with different parameter types (in the same scope).
REST/RESTful (Representational State Transfer)
An architecture that is resource oriented (accessible over an URL for example) and follows the constraints of requests being cacheable and the requests holding all parameters needed for operation (no need to manage a state or session on server side) among others. More
Semantic Versioning
http://semver.org/, how to create/update versions according to these rules
TOCTTOU
Time Of Check To Time Of Use: Security issue or bug caused by a change to a system between the check (where the conditions were ok) and the time at which a resource is used. Usually the solution consist into locking the resource before the check and while the resource is used. More