何が大切だと思いますか?
僕は、インデントと、コメントと、構造が大事だと思っています。
インデント
インデントは、字下げのことです。pythonではインデントでブロックを理解させますが、今はおいておきます。
日本語で考えて見てください。
AはBですBはCですAはCです
と、
AはBです
BはCです
AはCです
とでは、どちらが綺麗に見えるでしょうか。
もちろん、後者の方ですね。
他、条件分岐のif文やfor文、while文でも、字下げをすることによって見やすさは格段にあがります。
コメント
これは、どちらかというと、
「コードを後で見たときに自分が理解できるかどうか」
をサポートしてくれるものです。
たとえば、シェルスクリプトでこんなような文を書くとします。
cat $fname | grep java > $dir_name/analysis_pm1.txt
(analysis.shからとってきました)
この一文だけがあった場合は、何をしているのかわかるかもしれませんが、
230行もあるコードの内、このコードは何をやっているのか、わからなくなるときがあります。
そのときのためにコメントは使います。
小さなプログラムを書く場合は、そんなに必要は無いかもしれませんが、
大きなプログラム(300行を越えるコードだとか)を書くときには、
プログラムの前に、「これは何をやっているプログラムなのか」を書くのが良いと思います。
自分の場合は、頭では整理しきれないので、「自分が何をしたいのか」をまずコメントで書いてから
コードを書き始めます。そうすると、思考が整理できてとても楽です。
構造
いくら字下げをしても、コメントを書いても、コードは見にくくなってしまう場合があります。
その時には、そのプログラムの構造をもう一度考え直して見てください。
pythonの場合では、def文をメインのコードに書くのではなく、
設定pyファイルとして、その中にdef文を書いてimportするのも一つの手です。
例::
sample1.py
#!/usr/bin/python
#coding:utf-8
def calc(a, b, x):
print a*x, b*x
print "Please input number 1, 2, 3"
num1=raw_input(">>")
num2=raw_input(">>")
num3=raw_input(">>")
calc(num1,num2,num3)
というプログラムを、
sample2.py
#!/usr/bin/python
#coding:utf-8
def calc(a, b, x):
print a*x, b*x
sample3.py
#!/usr/bin/python
#coding:utf-8
import sample2 #設定ファイルをimport
print "Please input number 1, 2, 3"
num1=raw_input(">>")
num2=raw_input(">>")
num3=raw_input(">>")
sample2.calc(num1,num2,num3)
と、二つに分解することもできます。
あるいは、pythonでは20行もするコードだけど、○○なら○行で書ける、と言う場合は、
できるだけ短いコードで書ける言語を採用しましょう。
pythonのOSモジュールを使えば、ローカルで動かす大抵のプログラムは動かせます。
たとえば、機能の一部をシェルスクリプトで書いてそれをpythonのOSモジュールで呼び出したり、
ruby(僕は書いたことないですが)で書いたスクリプトを同じくOSモジュールで呼び出したりすることもできます。
こうやって、構造を変えて、より
シンプルにコードを書いていくのも一つの手です。