Changes for page Glossary

Last modified by chrisby on 2024/09/19 10:50

From version 1.1
edited by chrisby
on 2022/12/25 10:31
Change comment: There is no comment for this version
To version 1.2
edited by chrisby
on 2022/12/25 18:27
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,0 +1,82 @@
1 +(% class="box infomessage" %)
2 +(((
3 +The explanations given here do not claim to be complete. They merely serve as a brief description to give an idea of the respective term. For more detailed information, the Internet should be consulted.
4 +)))
5 +
6 +
7 +|**Term**|**Explanation**
8 +|Aware/Unaware|(((
9 +Aware:
10 +
11 +* Class A contains a source code reference of class B and is therefore aware of class B. If you only read the source code of class A, you would know that there has to be a class B.
12 +
13 +Unaware:
14 +
15 +* Class C does not contain a source code reference of class D and is therefore unaware of class D. If you only read the source code of class C, you wouldn't know about the existence of class D.
16 +)))
17 +|Best Practices|Generally accepted guidelines aimed at increasing your programming productivity. If you take them seriously, you will save yourself a lot of pain.
18 +|[[Constructor Injection>>path:/bin/view/Software%20Engineering/Dependency%20Injection/Types%20of%20Dependency%20Injections%20Compared/]]|Dependency Injection performed by passing a dependency to an instance via constructor argument.
19 +|Component|(((
20 +1. In Spring, it is a general term for a bean that no other Spring Bean Annotation matches.
21 +1. In software architecture, it is a module that can be executed independently. It is often compiled and/or compressed into an executable binary such as a .jar or .exe file.
22 +)))
23 +|Data Structure|A very simple type of class that contains only data and no logic. For example, a class that has only public fields but no methods.
24 +|Dependency|In the context of classes, a dependency is a field that must be initialized in order for an object of that class to function properly. Normally an object is inject via Dependency Injection.
25 +|Dependency Cycle|For example, class A depends on class B and class B depends on class A. If both objects need the other dependency to construct instances, dependency injection is impossible. Dependency cycles should be avoided. Instead, the dependency graph should look like a directed acyclic graph.
26 +|[[Dependency Injection>>path:/bin/view/Software%20Engineering/Dependency%20Injection/Separation%20of%20Implementation%20and%20Build%20logic/]] (DI)|An object is injected with the dependencies it needs instead of constructing them itself.
27 +|Dirty|(((
28 +~1. Messy, unreadable, or poorly designed code is referred to as "dirty code". Often associated with code written "quick-and-dirty" due to time pressure.
29 +
30 +2. The term comes from the phrase "getting one's hands dirty" and refers to coding work that is considered monotonous, detailed, low-level and undemanding, but necessary. The term is often used in the context of I/O operations. Creating a database transaction, for example, is always handled very similarly and is not considered a fun task for experienced programmers who have done it many times. High-level design is more exciting because it requires more creativity from the developer and is more intellectually stimulating. Example sentence.
31 +)))
32 +|Dynamic|(((
33 +Often refers to processes which appear at runtime when the code has already been executed and is "running". Examples:
34 +
35 +* Dynamic dependencies are dependencies which can be replaced at runtime.
36 +* Dynamically typed languages determine the type of an object at runtime.
37 +)))
38 +|Entity|(((
39 +~1. In an object context, this means that two objects of the same type that contain exactly the same values in their fields can be considered equivalent, but are still two separately existing entities.
40 +
41 +2. In the context of software architecture, the term refers to classes that represent the model of the application and often represent things from the real world. For example, a banking application may have entity classes such as //Account//, //Order//, //Customer//, or //Employee//. They are often built like simple Data Structures, but may contain additional validation logic to impose logical constraints on their fields. For example, the integer field //customer.age// must always be between 0 and 150 because that is a logical constraint on people's ages, even though the integer data range is technically much larger.
42 +)))
43 +|[[Field Injection>>path:/bin/view/Software%20Engineering/Dependency%20Injection/Types%20of%20Dependency%20Injections%20Compared/]]|Dependency Injection is performed by forcibly injecting a dependency into an instance through the use of reflections that break even the encapsulation measures. This type of Dependency Injection is to be avoided.
44 +|[[Inversion of Control (IoC)>>path:/bin/view/Software%20Engineering/Dependency%20Injection/Separation%20of%20Implementation%20and%20Build%20logic/]]|Transfers the responsibility of defining the logic and order of Dependency Injections from the developer to computer.
45 +|JavaBean|(((
46 +A design convention for data structures. Usually it means a class which has:
47 +
48 +* a public no-argument constructor
49 +* only private fields
50 +* only getters and setters for each field as methods
51 +
52 +Often, DTO's and entities follow this convention.
53 +)))
54 +|Logic|Any code with non-trivial complexity can be referred to as "logic". In contrast, for example, getters and setters have trivial complexity.
55 +|Magic|"Code that handles complex tasks while hiding that complexity to present a simple interface."^^[[[sources]>>url:https://en.wikipedia.org/wiki/Magic_(programming)]]^^ For example, the introduction of the Spring IoC container is quite simple, but the logic and wiring that goes on in the background is complex.
56 +|Pain|Something causes pain when somebody spend unnecessary and great effort on a task that often could have been prevented by better code design.
57 +|Production Code|The counterpart of the Test Code. It contains all the code required to run the application.
58 +|Reflection|(((
59 +A technique that allows you to work with code from a high-level perspective. For example, given the object "person", Reflection allows commands like this "person.getClass().getDeclaredFields()" to work with the fields of an object. E.g., reflection can ask for the fields names, access modifiers, etc. The code reflects on the code, it is self-reflective.
60 +)))
61 +|Runtime|(((
62 +The time period in which the code is executed. For example:
63 +
64 +* An exception is thrown by the compiler that finds an invalid syntax in the source code. This is called a compile-time exception.
65 +* Suppose that after a successful compilation, an executable file was created, started, and an exception was thrown shortly thereafter. Since this happened at runtime, it is a runtime exception.
66 +)))
67 +|Separation of Concerns|A principle that says that programs should be modular, with each module taking care of a different aspect of the program. Such modules provide higher level functions that take care of the aspect hidden in the background. For example,
68 +|[[Setter Injection>>path:/bin/view/Software%20Engineering/Dependency%20Injection/Types%20of%20Dependency%20Injections%20Compared/]]|Dependency Injection performed by passing a dependency to an instance via setter method argument.
69 +|Spring Bean|(((
70 +A term used in Spring IoC Framework for an object that is contained in the IoC container to be injected into other beans and/or to receive dependency injections. It is one of many components/beans that are wired together via IoC to form the application when it is started.
71 +
72 +Not to be confused with JavaBeans.
73 +)))
74 +|Static|(((
75 +Often refers to processes that depend non-running code. Examples:
76 +
77 +* Static Code Analysis Tools can examine source code files for possible improvements.
78 +* Statically typed languages determine the type of an object at compile time.
79 +)))
80 +|Test Code|The counterpart of the Production Code. It is code that checks whether the production code works as expected. Test Code plays no role in the operation of an application.
81 +|Test-Driven Development|A workflow in which the developer implements code in small steps, incrementally and iteratively, defining tests at each iteration.
82 +|Wiring|The process of aggregating beans and injecting the required dependencies performed by the IoC container.