I would do as you do, finding a name, hopefully good enough to prevent
an imperative need to jump to the function definition when re-reading
the code 6 months later.

Anyway, would you have written this particular function as a method of
a class, would the problem of giving it a "short but meaningful name"
rather than "long and meaningful name" have been easier ?

2010/2/4 Wardrop <t...@tomwardrop.com>:
> I often myself creating functions which perform a rather clear and
> simple task, but which is hard to describe, either because I don't
> know the term for what I've just implemented, or because the function
> is difficult to summarise in a couple of words. As an example, I've
> just created a function which determines how many times the value n,
> can be divided by the base, until n becomes smaller than the base.
> Here's the implementation...
>
> (defn <insert-name-here> [n base]
>  (loop [n n count 0]
>    (if (< n base)
>      {:val n :count count}
>      (recur (float (/ n base)) (inc count)))))
>
> This can be used among other things, to determine how to format bytes.
> Say I have a file that's 6,789,354 bytes, and I want to display that
> in a more readable manner, I could use my unnamed function like so
> (<unnamed> 6789354 1024), and get a new appropriately rounded number,
> including the number of times it has been rounded, which I can use the
> pick the appropriate suffix from a list ("Bytes", "KB", "MB", "GB",
> "TB).
>
> I mean, what the hell would you name this function, or would you not
> create such an obscure and generalised function to start with?
>
> On Feb 4, 3:15 pm, Jonathan Smith <jonathansmith...@gmail.com> wrote:
>> A function would be named based on what it is that it does.
>>
>> Difficulty naming functions would imply to me that the functions
>> involved do not contain a clear functionality.
>>
>> The names of the functions should sort of be an 'emergent property' of
>> a larger process of reasoning through the programming problem.
>>
>> As I see it, there are two ways to do this...
>> The first (systematic):
>>
>> 1.) break the program into reasonable steps
>>     (a concise description of the step being the function name)
>> 2.) make a function for each step.
>> 3.) break each function into steps
>> 4.) goto 2 until you are able to describe different pieces of the
>> program in the base language.
>>
>> the second (haphazard):
>> 1.) start writing code into a function (name of overall functionality)
>> 2.) when the code gets to a certain size,  decide that you have too
>> much code in the function.
>> 3.) look for different pieces of the task that you could potentially
>> pull out and name, or patterns that repeat more than once.
>> 4.) pull them out and use them as functions.
>> 5.) loop through this process of expanding the code and rewriting it
>> until you are done.
>>
>> I could write these as functions
>>
>> (defn systematic [idea]
>>   (let [sub-ideas (partition-idea idea)]
>>          (map #(unless (atomic? %1) (systematic %1)) sub-ideas))
>>
>> (defn haphazard [functionality]
>>   (let [[refactored-functionality & new-functions] (extract-
>> functionality functionality)]
>>   (map #(unless (atomic? %1) (haphazard %1)) new-functions)))
>>
>> Ideally these functions lead to the same output.
>> In my use of map I am assuming a lazy programmer without a deadline.
>> In the case of a motivated programmer, we might use dolist.
>> In the case of a lazy programmer with a deadline, we might use doall
>> or dorun..
>>
>> >On Feb 3, 10:47 pm, Wardrop <t...@tomwardrop.com> wrote:
>> > I've always struggled when it comes to defining good names for
>> > functions and methods. Now that I'm learning Clojure, function naming
>> > becomes even more imperative, as you don't have classes and objects to
>> > help give meaning to a method. I'm finding at the moment that I'm
>> > spending half my time thinking of decent names for functions. I'm just
>> > wondering what process you all use when it comes to naming functions?
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to