CSC/ECE 517 Fall 2007/wiki2 9 kk: Difference between revisions
No edit summary |
No edit summary |
||
Line 12: | Line 12: | ||
The function above is supposed to add two numbers but actualy returns the sum of squares of the two numbers which would suprise the programmer who is using the function. | The function above is supposed to add two numbers but actualy returns the sum of squares of the two numbers which would suprise the programmer who is using the function. | ||
Applying the principle of least astonishment, we can either rename the function to indicate its functionality or we can rewrite the functionality itself to correspond to its name. | |||
int sum_of_squares(int a, int b) | |||
{ | |||
return (a*a+b*b); | |||
} | |||
int add(int a, int b) | |||
{ | |||
return a+b | |||
} | |||
Revision as of 16:48, 24 October 2007
Principle of Least Astonishment
The principle of least astonishment states that when you are presented with a different outcomes one should always pick the one of least ambiguity or suprise. The principle has applications in a lot of fields. This wiki serves as a guide for the reader to understand more about this principle.
Examples
The simplest example in programming where the name of a function does not indicate its functionality.
int add(int a, int b) {
return (a*a+b*b);
}
The function above is supposed to add two numbers but actualy returns the sum of squares of the two numbers which would suprise the programmer who is using the function.
Applying the principle of least astonishment, we can either rename the function to indicate its functionality or we can rewrite the functionality itself to correspond to its name.
int sum_of_squares(int a, int b) {
return (a*a+b*b);
}
int add(int a, int b)
{
return a+b
}