CSC/ECE 517 Fall 2007/wiki2 9 A3: Difference between revisions
Line 37: | Line 37: | ||
===Moon Walker=== | ===Moon Walker=== | ||
A very good article can be found at [http://www.newyorker.com/archive/2005/10/03/051003crbo_books?currentPage=1 How Neil Armstrong brought the space program down to earth], page3 where Armstrong mentions about principle of least astonishment. | A very good article can be found at [http://www.newyorker.com/archive/2005/10/03/051003crbo_books?currentPage=1 How Neil Armstrong brought the space program down to earth], page3 where Armstrong mentions about principle of least astonishment. | ||
===Restroom Access Issues=== | |||
Employers facing the restroom issue for the first time are often inclined to apply the "Principle of Least Astonishment", which is that a person who presents as a woman will be less astonishing using the women's restroom than the men's, vice versa for a person presenting as a man. The complete article can be found at [ | |||
== See Also == | == See Also == |
Revision as of 04:35, 22 October 2007
What is 'Principle of Least Astonishment'?
The Principle of Least Astonishment states that the result of performing some operation should be obvious, consistent, and predictable, based upon the name of the operation and other clues. This axiom states that you should do your utmost to write stuff that is not going to astonish, dismay, or confuse the next person who has to look at it later.
Example
The name of a function should reflect what it does. Otherwise, a user of the function will be unpleasantly surprised: [2]
Bad design:
int calculate_salary(int days, int perday) { printf("The customer has worked for %d days and his salary per day is %d dollars", a, b); }
Better design:
int calculte_salary(int days, int perday) { return days * perday; }
As can be seen in the example above, in the first example the name of the method and its functionality doenot match. Whereas a better way of coding is the second one in which the functionality and the method name are related.
Good examples can be found at the following websites:
- User interface
- API-Design
- Whidbey System.Configuration
- HtmlUnit
- Verification Through the Principle of Least Astonishment
- How to design Good APIs
In addition to function naming, the principle applies to user interface design. Menu items and other controls should have an effect that is obvious based upon their text labels and placement relative to other controls.
Principle of Least Astonishment in fields other than programming
Principle of Least Astonishment is a very common principle that is used in every day life.
Riding in Traffic
The principle of least astonishment can be translated as "ride predictably" i.e. riding in such a way that minimizes surprise. A complete article on it can be found at Riding in Traffic
Moon Walker
A very good article can be found at How Neil Armstrong brought the space program down to earth, page3 where Armstrong mentions about principle of least astonishment.
Restroom Access Issues
Employers facing the restroom issue for the first time are often inclined to apply the "Principle of Least Astonishment", which is that a person who presents as a woman will be less astonishing using the women's restroom than the men's, vice versa for a person presenting as a man. The complete article can be found at [
See Also
http://doodleplex.com/glassmaze/2004/10/
References
[1] http://www.faqs.org/docs/artu/ch11s01.html
[2] http://c2.com/cgi/wiki?PrincipleOfLeastAstonishment
[3] http://www.cs.arizona.edu/projects/sumatra/hallofshame
[4] http://www.ibm.com/developerworks/library/us-cranky10.html?dwzone=usability