> The art of software development is in taking a problem, breaking it up in to 
> bite-size chunks, and putting those chunks together to form a practical 
> solution. Anyone who considers themselves a "better" programmer because their 
> functions are large due to their ability to handle large functions needs to 
> keep their ego in check. Mental capacity has nothing to do with it.
> My philosophy for functions is simple... a function does one well-defined, 
> discrete task, and it does it well. The inputs are clearly specified, and the 
> potential outputs/exceptions are fully understood. Sound familiar? These 
> requirements make it incredibly easy to write unit tests for the code.
> The number of times a function is used does not enter my field of interest. 
> It's irrelevant, as is the number of lines in each function. Following this 
> philosophy does naturally lead to fairly small functions, but as you move up 
> the levels of abstraction they tend to grow larger. For PHP, I consider code 
> in a file that's not within a function to be a function in itself, and the 
> same philosophy applies.


Your philosophy is interesting. Of course, a function should have one
well-defined and discrete task, but it is not always clear what one
task is. Let me take an example of a list. For example, you want to
write a function that removes an element from a list. In this example,
we will only use this list to remove items from it, so the code
required here won't be used another time. Now you have a few
1) (This one is probably Tony's approach): Write a single function
that searches the element and removes it from the list.
2) (My approach): Write a search function first, even though we're not
going to use it elsewhere), then write a delete function that uses the
search function to find it and remove it.
3) (Crazy approach ;)): Write a function that gets the next element in
the list, write a search function that uses the previous one. Write a
delete function that uses the search function, and then calls a
function that removes the actual element.

With your philosophy all three can fit.

The other interesting part in this discussion is the limited mental
work area. I assume that this is true, supported by the related
studies, makes me feel that we should write code as compact as
possible, right?

- Matijn

PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to