System置き換えの時はI/Oだけを見る
つまり、オブジェクト指向です
Systemは全てInput → Process → Outputで整理できる
https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F35671%2F04cb4681-c28e-5f35-5fba-6f6fb45c0b61.png?ixlib=rb-1.2.2&auto=format&gif-q=60&q=75&w=1400&fit=max&s=05261cfeed7104a8df1734caec367dae
新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 - Qiita
どのPatternであっても「入力」と「出力」がある。
入力→出力の整合性があるなら、「Function (Process)」はなんでも良い
なので、System全体を理解する時はI/Oだけを見るべき
例えば次のような計算をしたいとき
$ Sn = 1 + 2 + 3 + 4 + .... + n
$ Sn = \frac{n(n+1)}{2}
愚直に計算してみる
Python
code:1つ目の式.py
def function(n):
result = 0
for i in range(n):
result = result + (i + 1)
return result
print_text = function(10)
print(print_text) #-----> 55
code:2つ目の式.py
def function(n):
result = n * (n + 1) / 2
return result
print_text = function(10)
print(print_text) #-----> 55
Ruby
code:一つ目の式.rb
def function(n)
result = 0
for i in 1..n do
result = result + (i + 1)
end
return result
end
print_text = function(10)
print print_text #-----> 55
code:2つ目の式.rb
def function(n)
result = n * (n + 1) / 2
return result
end
print_text = function(10)
print print_text #-----> 55
上の2式どちらでも「1からnまでの和を求める」という意味では同じ
function()と書いてある限りは、関数の定義(def)を読まなければいけない
全てのcodeを読むのはしんどい
内部を全部読まないでよくする(=可読性を上げる)方法は
1.icon 関数名(function())をわかりやすくする(名付け)
2.icon comment outにて処理を自然言語で記述する
1.icon関数名(function())をわかりやすくする(名付け)
code:before.py
def function(n):
result = 0
for i in range(n):
result = result + (i + 1)
return result
code:after.py
def sumFromOne(n):
関数名を『Sum from one』つまり『1からの総和』と記述することで、内容をそのまま表す
2.iconcomment outにて処理を自然言語で記述する
code:before.py
def function(n):
result = 0
for i in range(n):
result = result + (i + 1)
return result
from:docstring Numpy style
code:after.py
def function(n):
"""
1からの自然数の総和を取得する。
Parameters
----------
n : int
最後の自然数
"""
result = 0
https://netprotections.gyazo.com/c29c2a6bfd6b3e1d75a1727bba9533b2
参考)VSCode拡張機能「Python Docstring Generator」でPythonのdocstringを自動生成しよう | DevelopersIO
所定のruleに合わせてcomment outを記述するとIDEにてPop up表示してくれることも