Browse Source

entry lecture 31th October

remotes/origin/HEAD fetched-on-2023-11-06
TheUltimateOptimist 1 year ago
parent
commit
2772150e98
  1. 54
      Lerntagebuch.md

54
Lerntagebuch.md

@ -15,4 +15,56 @@ Favoring polymorphism over inheritance is one of such practices.
More examples can be found on the [CleanCodeDeveloper](https://clean-code-developer.com) website. More examples can be found on the [CleanCodeDeveloper](https://clean-code-developer.com) website.
### repetition ### repetition
Developers should not be considered artists. An artist expresses his emotion with his work. On the contrary, developers solve a real world problem enabling businesses to gain an edge on their competitors for example. As such, developers are way closer to craftsmen than artists.
Developers should not be considered artists. An artist expresses his emotion with his work. On the contrary, developers solve a real world problem enabling businesses to gain an edge on their competitors for example. As such, developers are way closer to craftsmen than artists.
## lecture 31th October 2023
### takeaway
Programming paradigms:
- imperative -> program as a top down series of instructions
- procedural -> imperative but with procedures/functions
- declarative -> describing the problem is the main conern concrete instructions are generated from that description
- objectoriented -> supports object, classes and inheritance
- functional -> programs are created by applying and composing functions
Typed programming languages:
- parameters, values as well as return values of functions receive a datatype
- the datatype can be set explicitly or implicitly (in modern languages at least)
- one example is C
- advantages are failing fast and IDE completion
- disadvantages are having to know every type from the get-go and later type changes breaking the code
Untyped programming languages:
- datatypes are not specified
- sh is one example
- implicit type conversion is on of the advantages
- one disadvantage is type mistakes only surfacing at runtime
SOLID:
- Seperation of Concerns
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Seggregation Principle
- Dependency Inversion Principle
STUPID:
- Singleton
- Tight Coupling
- Untestability
- Premature Optimization
- Indescriptive Naming
- Duplication
Additional Principles:
- KISS -> Keep it simple and stupid
- FCoH -> Favor composition over inheritance
- SLA -> Single layer of abstraction
- YAGNI -> You aint't gonna need it
- IOC -> Inversion of control
- DI -> Dependency injection
### perception
Following SOLID for the group project is a good idea. Additionally avoiding the pitfalls referred to as STUPID is also important. Added to that we should follow the KISS(Keep it simple and stupid) principle.
### repetition
Functional programming is a paradigm that allows you to build programs by applying and composing functions. These functions allow no side affects. As a result functional programming can only be used for calculations and not for tasks like defining a UI for example.
Loading…
Cancel
Save