Rob
Rob

Reputation: 3

Code structure: should I use lots of functions to increase readability?

My question has Bash and PowerShell scripts in mind, but I suppose it applies to other languages as well.

It is my understanding that the purpose of a function is to perform the same (or a very similar) task multiple times. This decreases the amount of code in the script and it also makes it easier to maintain.

With that in mind, if you discover that your script only calls a function one time then there's no reason for that function to exist as a function. Instead, you should take the function's code and place it in the location where that function is being called.

Having said all that, here's my question:

If I have a complicated script, should I move each section of code into its own function even though each function will only be called once? This would greatly increase the script's readability because its logic (the functions) would all be at the top of the script and the flow of execution would be at the bottom of the script. Since 50 lines of code would be represented by just 1 line, it would be much easier to understand what the script is doing.

Do other people do this? Are there disadvantages to this approach?

Upvotes: 0

Views: 463

Answers (7)

Krishna
Krishna

Reputation: 249

As far as my knowledge is concerned, a function represents a Sequence of steps which become a part of larger program. Coming to your question, I strongly agree that function(s) improve readability and re-usability. But at the same time breaking every thing into pieces might not be a good practice. Finally, I want to give one statement : "Anything In Excess Is Not Beneficial!"

Upvotes: 0

Kenoyer130
Kenoyer130

Reputation: 7308

Read this book

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Here are some quotes from the book.

"Small! The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that."

"FUNCTIONS SHOULD DO ONE THING. THEY SHOULD DO IT WELL.THEY SHOULD DO IT ONLY."

Upvotes: 0

Péter Török
Péter Török

Reputation: 116266

Code readability is indeed a major concern, usually (nowadays) more important than sheer amount of code or performance. Not to mention that inlining function calls may not necessarily have noticeable performance benefits (very language specific).

So lots of developers (I venture to say that the better of the breed :-) create small functions/methods like you describe, to partition their code into logically cohesive parts.

Upvotes: 1

vdsf
vdsf

Reputation: 1618

Focus on being able to read and easily understand your code.

Having clear, readable code is definitely more a payoff than being afraid of function calls overhead. That's just a premature optimisation.

Plus, the goal of a function is to accomplish a particular task. A task can be a sub-task, there's nothing wrong with that!

Upvotes: 0

hvgotcodes
hvgotcodes

Reputation: 120198

Having functions also increases readability. So a bash script might look better and be easier to follow if it reads:

getParams()

startTask()

doSomethingElse()

finishTask()

# implement functions below

even if the function implementations are simple, it reads better.

Upvotes: 1

Edward Strange
Edward Strange

Reputation: 40867

It is my understanding that the purpose of a function is to perform the same (or a very similar) task multiple times.

Well, it is my understanding that a function is a discrete entity that performs a specific, well defined task.

With that in mind, if you discover that your script calls a given function AT LEAST ONCE, then it's doing its job.

Upvotes: 0

Jimmy
Jimmy

Reputation: 91472

A function does a well-defined task. If you have a mega function that does 5 different things, it strongly suggests it should be calling 5 smaller functions.

Upvotes: 0

Related Questions