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-18 07:37] – created veronicamcnally | principles:keep_it_simple_stupid [2025-11-25 10:53] (current) – old revision restored (2021-10-20 21:09) christian | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | As the healthcare reporting system runs using a normal PC, installation and maintenance costs could well be kept low. You won't need dedicated support staff on hand to draw you through every little point. You'll just be able to get on with serving the requirements of your folks. | + | ====== Keep It Simple Stupid (KISS) ====== |
| - | Lack of Vitamin Ve had. This essential vitamin has one primary natural source-the sun's heat. But in some climates this is a problem. And too much sun can lead Acupuncture clinic to skin cancer. Supplements are the best replacement. | + | ===== Variations and Alternative Names ===== |
| - | Usually, after the four-year course, you would definitely be required to plod through a year more of practical training where you'd be allowed to see and help out in an Osteopathic clinic or hospital. Should you wish to take a good even more specialized osteopathic field, then you will be looking at two to three more numerous training | + | * (Rule of) Simplicity |
| + | * KISS may also mean "Keep it short and simple" | ||
| - | Here is really the most controversial | + | **Remarks**: |
| - | The lawyers may become the biggest victors. This bill is a dream come true for all ambulance chasers. There work just like limits indicates. The millions they get for malpractice suits will keep their butts in plush offices and fancy cars forever. I've got a doctor friend that pays over $100,000 a year in malpractice insurance on your own. Keep that in mind next time you complain about your physician bill. | ||
| - | Another form of Spondylosis is cervical spondylosis that affects the back badly. Lumbar Spondylosis symptoms generally happens to those individuals who are previously work excessively on the computer, drive vehicle, farmers who work tirelessly in light and mostly in that old age buyers. If the patient uses the painkillers for long time, it might have a poor effect about the stomach and kidneys. However, in many cases, the Lumbar Spondylosis does not show any symptoms; just he feels backache a start. He should consult the doctor and get the x-ray report and CT scan of his anchor. | + | ===== Context ===== |
| - | Since employers do lose some tax advantages in this proposal, I would recommend we permit them to convert those tax advantages a good increase with your pay-scale. Both of these suggested changes would create additional jobs greater salaries. | + | * [[contexts: |
| + | * [[contexts: | ||
| + | * [[contexts: | ||
| + | * [[contexts: | ||
| - | Lumbar Spondylosis is a kind of spondylosis disease. Around the globe a medical term used for the degenerative joint disease relating for the part of the back in between ribs and the hipbones impuissance. Symptoms of lumbar spondylosis are severe pain inside of neck, arms, shoulders and limbs, powerlessness of muscles and abnormal skin sensations called Paresthesia. | + | ===== Principle Statement ===== |
| - | As application runs on desktop pcs, the healthcare reporting product is easy vehicle insurance and use, and is like familiar computer software. This encourages consumers to use it, and same goes with be inexpensive Acupuncture clinic | + | A simple solution is better than a complex one, even if the solution looks stupid. |
| - | Unknown in my experience at the time and not for within month after my injury had occurred , I learned that Canadian , I'll call him Bill, being employed by the same company as myself, had suffered replacing injury of the same time as mine 新潟市中央区 肩こり . When I asked about him and what he was doing about it, his supervisor explained that he was on a waiting list for an MRI tryout. He told me that this wasn't scheduled until mid-January 2009. Help to make a long story short, the essence of this story is: by the time Bill had his MRI test, I seen my regular doctor, been to be able to specialist (an orthopedic), | ||
| - | On the whole, make use of a few details to iron out before we embark on any of my proposed changes, although i challenge for you to definitely give it some felt. It makes sense and it works within our current country' | + | ===== Description ===== |
| - | What could be the normal co-pay for acupuncture if I prefer a preferred provider? This is actually the amount would certainly think pay out-of-pocket | + | The KISS principle |
| - | When one looks at total revenues for the United States, the biggest revenue great for Personal Taxes. If well-built to resolve | + | A solution that follows |
| + | |||
| + | 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, understandability, | ||
| + | |||
| + | 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 with sophisticated programming language features. So simple and stupid programs are easier to maintain because the maintainer needs less time to understand them and is less likely to introduce further defects. | ||
| + | |||
| + | 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 of the code, so it will be wise to concentrate | ||
| + | "Three rules of optimization": | ||
| + | |||
| + | |||
| + | ===== Strategies ===== | ||
| + | |||
| + | This is a very general principle, | ||
| + | |||
| + | * 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 "(rule of) simplicity" | ||
| + | |||
| + | |||
| + | ===== Evidence ===== | ||
| + | /* Comment out what is not applicable and explain the rest: */ | ||
| + | /* * [[wiki: | ||
| + | /* * [[wiki: | ||
| + | |||
| + | |||
| + | [[wiki: | ||
| + | |||
| + | [[wiki: | ||
| + | |||
| + | The following hypotheses can be stated: | ||
| + | - Simpler solutions are faster to implement. | ||
| + | - Simpler solutions yield fewer implementation faults (which reduces testing effort). | ||
| + | - Simpler solutions are easier to maintain, i.e. detecting and correcting defects is more effective and efficient. | ||
| + | - 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, | ||
| + | |||
| + | 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 at least as good as the McCabe metric (also called cyclomatic complexity) ((see Albert Endres, Dieter Rombach: //A Handbook of Software and Systems Engineering//, | ||
| + | |||
| + | |||
| + | ===== 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 to KISS. This means that it is worthwhile to consider KISS when considering one of those. Nevertheless this does not mean that this is true the other way around. When considering KISS, one wouldn' | ||
| + | |||
| + | * **[[Generalization Principle]] (GP)**: This is the directly converse principle. A generally applicable solution typically is not simple anymore. | ||
| + | * **[[Murphy' | ||
| + | * [[Model Principle]] (MP): There are often simpler ways to build a software system than to model and mirror the real-world behavior, which frequently means having more objects and more complicated structures. Nevertheless, | ||
| + | |||
| + | ==== 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.1763447832.txt.gz · Last modified: by veronicamcnally
