User Tools

Site Tools


principles:uniformity_principle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
principles:uniformity_principle [2025-08-31 00:07] – created andymatney560principles:uniformity_principle [2025-08-31 14:13] (current) – old revision restored (2021-10-18 22:00) christian
Line 1: Line 1:
-I gulped, my stomach churned and my heart tightened. i had to simply tell him the truth- that I was homeless. due to fear in situations like this was that the other person would in my financial circumstance and hold it against me. John knew I'd managed a mobile home park-but he didn't know I had slept in the grass of a trailer- when i was sleeping under a bridge.+====== Uniformity Principle (UP) ======
  
-Once experience found an online Casino a person need to think is perfect for you, subscription. You don't just for you to stick one casino either. You can become a an associate a few different ones to stand more possibility of making and take note cash and playing different games against different somebody.+===== Variants and Alternative Names =====
  
-And we all talk with respect to the games these people have, they got the house full of great casino games. Select from their video poker, card games, slots games, table games, then one of very best offer that's their massive jackpot. 
  
-Set your profit margin for just 25 percent, this might low but its fairly easy to hit by incorporating patience. online Casino play is the same as riding a swing and knowing whenever you should jump off at convey . your knowledge point going forward, a similar application is involved beneath.+===== Context ===== 
 +/* fill in contexts here: */ 
 +  * [[contexts:Object-Oriented Design]] 
 +  * [[contexts:API Design]] 
 +  * [[contexts:Architecture]] 
 +  * [[contexts:User Interface Design]] 
 +  * [[contexts:Implementation]] 
 +  * [[contexts:Documentation]]
  
-Blackjack. The whole idea among the game through using accumulate cards with point totals as close to 20. It should be done without groing through 21 following which ?????? bj88 other cards are represented by their number.+===== Principle Statement =====
  
-Most online casinos offer no deposit bonuses for beginners. This is one really misunderstood bonus items. It is basically a gimmick because we're not going to present you with free money without really making you jump any few hoops during idea of arbitrage .. The idea of no deposit bonus is to get new players to explore an online casino. It is basically the equal to a play account except there might be the slight potential genuinely get coughed up.+Solve similar problems in the same way.
  
-Of course, it is really a usual thing to prefer a quality bonus to meet your requirements but if you are not after gaining a lot, you may choose a 100% bonus with $50 limit for top stakes board games. With the so many kinds of cash and item bonuses designed for online gamblers, you definitely have a lot of choices. It merely requires a wrong choice bj88 shed a bundle. It's that easy. 
  
-Just to keep things interesting I loaded a European roulette of such a Mobile Casino. I played just a spins - just and try to look. First, you are running this joystick of the stakes field to you can put bets. After that you pressing the spin button you would see the wheel whereas when the ball landed you would see benefits. It is clear that the bets are longer in comparison to the offline mode, especially if they are a couple of. The advantage of this bj88 roulette game is that you have an substitute for make blank spins, but disadvantage is the fact that minimum bet amount of two USD even betting upon the numbers. I haven't being playing too many deals on the funny mobile casino game keeping in mined Albert Einstein conclusion: "You cannot beat a roulette table if you steal money from it".+===== Description =====
  
-Implicitly, Having been lucky, otherwise such successful gains and distortions are not explainedOn the other hand, absolutely nothing is bad to say, I'm keen on the PlayTech online casinos, recreation there fairly fair and i don't see any reasons for problems on [[http://RLU.Ru/5asED|bj88]] brands. The graphics in the mobile casino was nice, the set of games was rather authoritativeThe interface is useful for joystickwhich usually convenient. Sport speed is typical like in Microgaming mobile casinosabout 30 mins per 100 hands. The traffic have also been within the limits of 150 Kb per 100 hands leading to 200 Kb the accessing.+Software design comprises many similar tasks. There are plenty of design decisions that are similar to ones taken beforeUP tells that a design is good when similar design problems are solved the same wayUP can be applied to large variety of problems: naming identifiersordering parametersdeciding upon framework or library usage, etc
  
-The Nokia 6500 Slide is a slide open phone and works well with networks with regard to example 2G and 3rd generation. This handset is stylish that has dimension that permits you to the user to carry it quite quite easilyThe weight is also light and it is indeed so surprising to find so many features incorporated in a mobile that weighs only 125 gms.+Striving for consistency and always using the same solutions also means that it can be good idea to apply a "bad" or less-well suited solution for the sake of consistencyIf for example a bad naming scheme is used throughout the whole project, it is advisable not to break it as an inconsistency in the naming scheme would be worse than applying the bad naming scheme everywhere.
  
-If you need the casino online that gives priority to slots, Super Slot Casino is where for you have. They have 45 multi line slots for those avid slots playersDespite the fact that are focusing in giving the best line of slot games, they have also 100 other casino games for people that want take a look at a break and in order to try other exciting video games.+For documentation UP means to have a consistent documentation structure such that a certain piece of information can be found easilyFurthermore uniformity in naming schemes is especially important for documentationWhen referring to the same concept the same word has to be used. Synonyms are a source of misunderstanding.
  
-Playing free online slot games is a pretty good way to get away from the world actually problems may won't be draining your. Some online slot games will even give credits towards sweepstakes you can win money in, this would be genuine money. Will games still have all of the stops and whistles exactly the like the paid our. 
  
-Everyone knows the song "Smoke Using Water"Every kid the person who picked up guitar for to start with plunked out that four chord blues riffFor some kidsconsider only thing they were ever able to playAs well as many of these kids think they understand story of methods bj88 that song was notedYes, there was a fire, the poor oneBut what mostif each and every themdon't get is that the fire that broke out that day was during Frank Zappa and the Mothers Of Invention performance.+===== Rationale ===== 
 + 
 +Following UP reduces the number of different solutions. There are fewer concepts to learn, fewer problems to solve and fewer kinds of defects that can occur. So the developers, whether the original ones or the maintainers, have an easier task in creating, understanding, and maintaining the software. By reducing variety in the design, the software becomes simpler (see [[Keep It Simple Stupid|KISS]]). 
 + 
 +Documentation which follows fixed structure helps you find a certain piece of information faster because as soon as you have understood the structure you know where to look. 
 + 
 + 
 +===== Strategies ===== 
 + 
 +  * Use the same naming scheme everywhere 
 +  * Use the same techniques, mechanisms, libraries, and frameworks everywhere 
 +  * In similar methods use the same order of parameters 
 + 
 + 
 +===== Caveats ===== 
 + 
 +UP demands solving similar problems in the //same way// and not just in similar way. This is crucial as subtle differences can be dangerous. These small differences are created easily. Sometimes it is impossible to do two things exactly the same way. And also over time two modules may slowly diverge. So it is sometimes better to have two modules work completely differently than to allow for these subtle differences as they easily lead to misconceptions and mistakes (see [[Murphy's Law|ML]]). 
 + 
 +See also section [[#contrary principles]]. 
 + 
 + 
 +===== Origin ===== 
 + 
 +This principle is newly proposed here. Nevertheless the idea is not new and should be pretty intuitive to every developer. 
 + 
 + 
 +===== Evidence ===== 
 +/* Comment out what is not applicable and explain the rest: */ 
 +  * [[wiki:Proposed]] 
 + 
 +/*  * [[wiki:Examined]] 
 +  * [[wiki:Accepted]] 
 +  * [[wiki:Questioned]] 
 +*/ 
 + 
 +===== Relations to Other Principles ===== 
 + 
 +==== Generalizations ==== 
 + 
 +  * [[Murphy's Law]] (ML): A typical source of mistakes are differencesIf similar things work similarly, they are more understandable. But if there are subtle differences in how things work, it is likely that someone will make the mistake to mix this up. 
 + 
 +==== Specializations ==== 
 + 
 +==== Contrary Principles ==== 
 + 
 +Note that UP can be contrary to virtually every other principle as it demands neglecting other principles in favor of uniformity. 
 + 
 +  * [[Keep It Simple Stupid]] (KISS): Although UP normally reduces complexity, sometimes UP demands more complex solutions because they are already applied elsewhere and for the sake of uniformity shall also be applied in simpler contexts where they would not be necessary. 
 +  * [[More Is More Complex]] (MIMC): Documenting something because of UP may result in unnecessary documentation. There may be more concise ways of documentation. 
 +  * [[Model Principle]] (MP): UP may demand adhering to a certain naming scheme, which may not be best with respect to MP. See [[#example 1: naming schemes]]. 
 + 
 +==== Complementary Principles ==== 
 + 
 +  * [[Principle of Least Surprise]] (PLS): When applying UP, PLS should also be considered for naming modules. See [[#example 1: naming schemes]]. 
 + 
 + 
 + 
 +==== Principle Collections ==== 
 + 
 +{{page>collections:OOD Principle Language#Box}} 
 + 
 + 
 +===== Examples ===== 
 + 
 +==== Example 1: Naming Schemes ==== 
 + 
 +A typical example of the application of UP is the naming of method identifiers for common container classes like [[glossary:stacks]] or [[glossary:queues]]. This also shows that there are several ways to apply this principle. 
 + 
 +Stacks typically have the methods ''push'', ''pop'' and ''peek'' (sometimes also called ''top''). ''push'' puts an item onto the stack, ''pop'' removes the top most item and ''peek'' retrieves the value of the top most item without removing it from the stack. This is how the common stack model describes this data structure (see [[Model Principle|MP]]). Applying UP to this naming decision means that the methods should be named precisely as they are named everywhere else alsoSo a developer knowing the model or other implementations of the model will immediately know how to use this module as well. In this case MP and UP demand the same thing. [[Principle of Least Surprise|PLS]] is satisfied here as well as a developer knowing stacks will expect exactly that. 
 + 
 +Queues on the other hand typically have the methods ''enqueue''''dequeue'', and ''peek'' (or ''front''/''first'' or the like). MP would demand naming the operations of a ''Queue'' module exactly that way. But there are several ways Up can be applied here. The one way is to apply the principle just like above. Resulting in methods ''enqueue'' and ''dequeue''. This is how it is done in .NET((http://msdn.microsoft.com/en-us/library/system.collections.queue(v=vs.110).aspx)). The other way is to consider the method identifiers of the ''Stack'' module. A possible application of UP could be to demand naming the queue methods just like the stack methods, meaning also ''push'', ''pop'' and ''peek''. This is the naming scheme which was chosen in the Delphi RTL((http://docwiki.embarcadero.com/Libraries/XE3/en/System.Contnrs.TQueue_Methods)). Here MP and UP are contrary. A further downside of this approach is that ''pop'' and ''push'' methods might be surprising for queue class. So PLS would oppose this solution. 
 + 
 +A third possibility is to find a common abstraction and to apply a very general naming scheme to all descendant classes (stack classesqueue classes and others). This is the way it is done in Eiffel((see Bertrand Meyer: //[[http://en.wikipedia.org/wiki/Object-Oriented%20Software%20Construction|Object-Oriented Software Construction]]//p. 127)). Here there the method names are ''put'', ''remove'' and ''item'' regardless of the concrete data structure. This is contrary to MP but creates a uniform naming scheme throughout the API. So there is less uniformity across APIs but stronger uniformity within the API. MP and UP are here contrary too. For PLS this means that a developer who is used to this philosophy is never surprised by having these methods. But developers new to it might be nevertheless. 
 + 
 +==== Example 2: This Wiki ==== 
 + 
 +This wiki has a certain structure which is uniform across all principles. Each principle description has the same sections with the same kind of information. This makes looking up principles much easier because one can directly jump to those sections containing the needed information. To mitigate the problem of unnecessary documentation (i.e. MIMC violations) sections without additional information are left blank instead of describing something obvious. 
 + 
 + 
 +===== Description Status ===== 
 +/* Choose one of the following and comment out the rest: */ 
 +/*[[wiki:Stub]]*/ 
 +[[wiki:Incomplete]] 
 +/*[[wiki:Complete]]*/ 
 + 
 +===== Further Reading ===== 
 + 
 +===== Discussion ===== 
 + 
 +Discuss this wiki article and the principle on the corresponding [[talk:principles:Uniformity Principle|talk page]]. 
principles/uniformity_principle.1756591646.txt.gz · Last modified: by andymatney560