Separating your code for easier testing, understanding and re-use; example in Ruby
You don't want to write the same piece of program twice. Nor do you want to have to call in the technical experts on a particular topic to work on general code. So you should separate your code (whatever language you're using) into named blocks, where the named blocks each represents an element that's likely to be repeated, or contains specialist algorithms which can usefully or potentially be maintained by a separate person / group.
Here's definition of some code that repeats:
def ask(question="")
print "#{question}? "
result = gets.to_i
return result
end
and here's an example of calling that code:
delegates = ask "How many delegates"
This separation also starts moving you towards:
• a shorter and more readable piece of calling code
• separation of logic into multiple files, so that appropriate logic can be shared between programs
• an abiity to test the code in a modular way (by adding test points)
From last week's Ruby course - a short example showing the separation -
[here]. Public Ruby course details
[here].
The example also shows the use of optional parameters to a method in Ruby, with default values specified if they're not given in the call, how you can build variable and expression resuts within a Ruby string, and how you can turn your script into an executable program file when running on a Linux or Unix operating system host (written 2015-06-02, updated 2015-06-03)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
R104 - Ruby - Control Structures [960] 1st, 2nd, 3rd revisited in Ruby - (2006-12-02)
[962] Breaking a loop - Ruby and other languages - (2006-12-03)
[985] Equality in Ruby - == eql? and equal? - (2006-12-14)
[995] Ruby's case - no break - (2006-12-17)
[1163] A better alternative to cutting and pasting code - (2007-04-26)
[1220] for loop - how it works (Perl, PHP, Java, C, etc) - (2007-06-06)
[1582] Ruby, C, Java and more - getting out of loops - (2008-03-19)
[1587] Some Ruby programming examples from our course - (2008-03-21)
[1696] Saying NOT in Perl, PHP, Python, Lua ... - (2008-07-04)
[1738] Clean code, jump free (Example in Lua) - (2008-08-06)
[1870] What to do with a huge crop of apples - (2008-11-04)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1891] Ruby to access web services - (2008-11-16)
[1904] Ruby, Perl, Linux, MySQL - some training notes - (2008-11-23)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[2471] A short form of if ... then ... else - (2009-10-23)
[2619] Passing code to procedures and yield in Ruby - (2010-02-02)
[2711] For loop - checked once, or evety time? Ruby v Perl comparison and contrast - (2010-04-07)
[2892] Alternative loops and conditionals in Ruby and Perl - (2010-07-28)
[2975] Why do I need brackets in Ruby ... or Perl, Python, C or Java - (2010-09-29)
[3156] Splitting data reading code from data processing code - Ruby - (2011-02-04)
[3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3200] How a for loop works Java, Perl and other languages - (2011-03-12)
[3253] Is this number between? Does this list include? - Ruby - (2011-04-18)
[3254] Multiple inputs, multiple out, ruby functions - (2011-04-19)
[3397] Does a for loop evaluate its end condition once, or on every iteration? - (2011-08-18)
[3422] Assigning values to variables within other statements - Ruby - (2011-09-07)
[3619] Ruby v Perl - a comparison example - (2012-02-21)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3769] Muttable v immutable and implications - Ruby - (2012-06-20)
[4322] Learning to Program - the conditional statement (if) - (2014-11-21)
[4323] Learning to program - Loop statements such as while - (2014-11-22)
[4370] Conditionals, loops and methods in Ruby - a primer with simple examples - (2014-12-29)
[4402] Finding sum, minimum, maximum and average in Python (and Ruby) - (2015-01-19)
[4504] Where does Ruby load modules from, and how to load from current directory - (2015-06-03)
[4674] Alternating valuses / flip-flop / toggle - example in Ruby - (2016-05-17)
Some other Articles
In favour of adoption rather than puppy purchase - dogs!Peak weekend - where there are still rooms near MelkshamRegular Expressions for the petrified - in RubySeparating your code for easier testing, understanding and re-use; example in RubyReading and parsing a JSON object in RubyDefining the behaviour of your web site and testing that it worksThe TransWilts Community Intergrated Transport CorridorSignificant work - beyond helloworld in RubyRuby - where one statement ends and the next begins