principles:keep_it_simple_stupid
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| principles:keep_it_simple_stupid [2025-11-04 21:29] – created colequinn8555 | principles:keep_it_simple_stupid [2025-11-25 10:53] (current) – old revision restored (2021-10-20 21:09) christian | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Emotions are a factor because the body and mind are strongly connected. Of course we all know, stress and frustration can cause insomnia. Individuals with this type of stress will also work irritable maintain neck afflictions. The treatment should smooth the liver, helping to flow the qi. The point LV 3 on the foot and LI 4 on the hand can help treat Liver Qi stagnation. This can sometimes also cause digestive problems such as bloating, belching, and feeling sick. Points for digestion can help, while ST 36 near the knee and PC 6 on the forearm. | + | ====== Keep It Simple Stupid (KISS) ====== |
| - | Another kind of Spondylosis is cervical spondylosis that affects the backbone badly. Lumbar Spondylosis symptoms generally take place in those you also must be are at one point would work excessively on the computer, drive vehicle, farmers who work tirelessly in the sunshine | + | ===== Variations |
| - | There are so many more questions, but I am going to stop here. I am afraid. I believe within a free, capitalistic society. America became the greatest, most powerful, and richest because of the free spirit of it's people. I do believe there are better ways fulfill the needs of the uninsured, but it will certainly be squarely at the disposal of politicians. Isn't it time? | + | * (Rule of) Simplicity |
| + | * KISS may also mean "Keep it short and simple" | ||
| - | [[http://www.gbsa.kr/ | + | **Remarks**: " |
| - | The government will mandate that organizations insure along with " | ||
| - | Health is simple, healthcare is not even. If we keep it simple and manage health, we do not require as via a tunnel the complicated, | + | ===== Context ===== |
| - | According to Carmen Green, M.D., a problem specialist at the University of Michigan' | + | * [[contexts: |
| + | * [[contexts: | ||
| + | * [[contexts: | ||
| + | * [[contexts: | ||
| - | The United healthcare insurance provides a drug plan which requires social security part Ve had. This plan is aggressively marketed by United 新潟市 整体院. Large segments in the senior population have joined for medication plan. | + | ===== Principle Statement ===== |
| - | For 20 years, essential revenue every year would require 288.5 billion more in contrast to 2010 revenues for 2,450.2 billion, which is an increase of 113.3%. Using caffeinated beverages contain three examples the new tax would be $3,550 for your single, $1,624 for the married, and $11,523 for me. Percentage of income would in order to 7.1% for the single, couple of.3% for the married, and eleven.8% for me. | + | A simple solution |
| - | Balancing each party is impossible. I should be paid well enough to support my family, yet I'd rather not be robbed when seeking to healthcare regions. This is where private industry can step to the peak. Healthcare shouldn' | ||
| - | Ditto for that costs. I really believe each people today will pay more for healthcare no this costs. The government again will offer their genius for reducing costs. They' | + | ===== Description ===== |
| - | Be open-minded, be flexible | + | The KISS principle is about striving for simplicity. Modern programming languages, frameworks |
| + | |||
| + | A solution that follows the KISS principle might look boring or even " | ||
| + | |||
| + | This does not mean that features like inheritance and polymorphism should not be used at all. Rather they should only be used when they are necessary or there is some substantial advantage. | ||
| + | |||
| + | ===== Rationale ===== | ||
| + | |||
| + | A simpler solution is better than a complex one because simple solutions are easier to maintain. This includes increased readability, | ||
| + | |||
| + | The advantage of simplicity is even more significant when the person who maintains the software is not the one who once wrote it. The maintainer might also be less familiar | ||
| + | |||
| + | One reason to create more complex code is to make it more flexible to accommodate further requirements. But one cannot know how to make it flexible or if that flexibility will be ever needed. | ||
| + | |||
| + | "When you make your code more flexible or sophisticated than it needs to be, you over-engineer it. Some do this because they believe they know their system' | ||
| + | |||
| + | Another reason to create more complex code is to make optimizations. An optimized code is a more complex code. Pareto principle applies also in code: a program spends most of the time in a small portion | ||
| + | "Three rules of optimization": | ||
| + | |||
| + | |||
| + | ===== Strategies ===== | ||
| + | |||
| + | This is a very general principle, so there is a large variety of possible strategies to adhere more to this principle largely depending on the given design problem: | ||
| + | |||
| + | * Avoid inheritance, | ||
| + | * Avoid low-level optimization of algorithms, especially when involving Assembler, bit-operations, | ||
| + | * Use simple brute-force solutions instead of complicated algorithms. Slower algorithms will work in the first place. | ||
| + | * Avoid numerous classes and methods as well as large code blocks (see [[More Is More Complex]]) | ||
| + | * For slightly unrelated but rather small pieces of functionality use private methods instead of an additional class. | ||
| + | * Avoid general solutions needing parameterization. A specific solution will suffice. | ||
| + | * ... | ||
| + | |||
| + | |||
| + | ===== Caveats ===== | ||
| + | |||
| + | See section [[#contrary principles]]. | ||
| + | |||
| + | |||
| + | ===== Origin ===== | ||
| + | |||
| + | The principle was coined by the American engineer Kelly Johnson referring to the requirement that a military aircraft should be repairable with a limited set of tools under combat conditions ((Ben R. Rich: // | ||
| + | |||
| + | The principle of striving for simple solutions sometimes is also called | ||
| + | |||
| + | |||
| + | ===== Evidence ===== | ||
| + | /* Comment out what is not applicable and explain the rest: */ | ||
| + | /* * [[wiki: | ||
| + | /* * [[wiki: | ||
| + | |||
| + | |||
| + | [[wiki: | ||
| + | |||
| + | [[wiki: | ||
| + | |||
| + | The following hypotheses can be stated: | ||
| + | | ||
| + | - Simpler solutions yield fewer implementation faults (which reduces testing effort). | ||
| + | - Simpler solutions are easier to maintain, i.e. detecting | ||
| + | - Simpler solutions yield more reliable software, i.e. fewer defects show up after releasing the software. | ||
| + | |||
| + | All these hypotheses can be examined with respect to different complexity metrics. | ||
| + | |||
| + | Hypothesis 1 is true by definition. If the solution cannot be implemented quickly, it is not simple. | ||
| + | |||
| + | Though hypotheses 2 and 3 are not true by definition but they can be regarded intuitively clear. Nevertheless, there is some research. In ((Virginia R. Gibson and James A. Senn: // | ||
| + | |||
| + | Furthermore, | ||
| + | |||
| + | Lastly, hypothesis 4 is likely to be false. Several studies relating complexity metrics and post-release reliability show that module size in lines of code predicts reliability | ||
| + | |||
| + | |||
| + | ===== Relations to Other Principles ===== | ||
| + | |||
| + | ==== Generalizations ==== | ||
| + | |||
| + | ==== Specializations ==== | ||
| + | |||
| + | * [[More Is More Complex]] (MIMC): KISS states that one should strive for simplicity. MIMC makes this more concrete stating that more of anything (methods, classes, lines of code, ...) increases complexity. | ||
| + | * [[You Ain't Gonna Need It]] (YAGNI) | ||
| + | * [[Rule of Parsimony]] | ||
| + | * [[Rule of Robustness]] | ||
| + | |||
| + | ==== Contrary Principles ==== | ||
| + | |||
| + | Note that many principles are contrary | ||
| + | |||
| + | * **[[Generalization Principle]] (GP)**: This is the directly converse principle. A generally applicable solution typically is not simple anymore. | ||
| + | * **[[Murphy' | ||
| + | * [[Model Principle]] | ||
| + | |||
| + | ==== Complementary Principles ==== | ||
| + | |||
| + | ==== Principle Collections ==== | ||
| + | |||
| + | {{page> | ||
| + | {{page> | ||
| + | |||
| + | |||
| + | ===== Examples ===== | ||
| + | |||
| + | ==== Example 1: Fuzzy Simplicity ==== | ||
| + | |||
| + | Simplicity is a blurry, partly subjective measure. Sometimes it is difficult to tell what is simpler. The following example shows that: | ||
| + | |||
| + | <code java> | ||
| + | public String weekday1(int dayOfWeek) | ||
| + | { | ||
| + | switch (dayOfWeek) | ||
| + | { | ||
| + | case 1: return " | ||
| + | case 2: return " | ||
| + | case 3: return " | ||
| + | case 4: return " | ||
| + | case 5: return " | ||
| + | case 6: return " | ||
| + | case 7: return " | ||
| + | default: throw new IllegalArgumentException(" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public String weekday2(int dayOfWeek) | ||
| + | { | ||
| + | if ((dayOfWeek < 1) || (dayOfWeek > 7)) | ||
| + | throw new IllegalArgumentException(" | ||
| + | |||
| + | final String[] weekdays = { | ||
| + | " | ||
| + | |||
| + | return weekdays[dayOfWeek-1]; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Both methods do exactly the same thing. They return a string representing the weekday. Just the implementation is different. Both versions may be seen as simpler than the other depending on the view taken. '' | ||
| + | |||
| + | On the other hand '' | ||
| + | |||
| + | So it's not objectively clear which of the two implementations KISS prefers without saying which complexity metric to apply. But this ambiguity is not a problem since principles are not meant to be unambiguous and objective. Eventually a human developer has to decide which solution to implement and the principles only give guidelines. | ||
| + | ===== Description Status ===== | ||
| + | /* Choose one of the following and comment out the rest: */ | ||
| + | / | ||
| + | [[wiki: | ||
| + | / | ||
| + | |||
| + | ===== Further Reading ===== | ||
| + | |||
| + | * [[wiki> | ||
| + | * [[wp> | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== Discussion ===== | ||
| + | |||
| + | Discuss this wiki article and the principle on the corresponding [[talk: | ||
principles/keep_it_simple_stupid.1762288179.txt.gz · Last modified: by colequinn8555
