🛠️

codeの再利用性とは何か。

2023/01/02に公開約2,600字

codeの再利用性とは何か。

#再利用性が高いと判断する材料は何か。それは同じ変数を使った回数を数えればよいのである。
#ん?と思うかもしれないが、以下のcodeを見ながら計算してみると分かりやすい。

secret_items = {0:'タケコプター', 1:'コンピューターペンシル', 2:'音消しマイク', 3:'どこでもドア'} #変数

def get_item(item, num):
    print(f'ジャジャーン、{item[num]}!! 変数が{num + 1}回使われた')

for num in range(4):
    get_item(secret_items, num)
ジャジャーン、タケコプター!! 変数が1回使われた
ジャジャーン、コンピューターペンシル!! 変数が2回使われた
ジャジャーン、音消しマイク!! 変数が3回使われた
ジャジャーン、どこでもドア!! 変数が4回使われた

#4行のcodeで変数が4回使われたので

print(f'ジャジャーン、{item[num]}!! 変数が{num + 1}回使われた')

の箇所が4-1の3回再利用されている。
#codeの再利用率は(4-1)/(4-1)で 100% codeを再利用していることが分かる。

次にクラスのcodeを見ながら計算してみよう。

import sys

class Tokyo_class(object):
    """東京都"""

    def __init__(self, name):
            self.name = name #self.name変数

    def nobi_house(self):
        """野比家にて四次元ポケットを使う"""
        print(f'-----{sys._getframe().f_code.co_name}-now----')
        self.name.hello() #self.name変数が1回
        self.name.items(0) #self.name変数が2回
    
    def school(self):
        """学校にて四次元ポケットを使う"""
        print(f'-----{sys._getframe().f_code.co_name}-now----')
        self.name.hello() #self.name変数が3回
        self.name.items(1) #self.name変数が4回

    def gouda_house(self):
        """剛田家にて四次元ポケットを使う"""
        print(f'-----{sys._getframe().f_code.co_name}-now----')
        self.name.hello() #self.name変数が5回
        self.name.items(2) #self.name変数が6回


class Century21(object):
    """21世紀の世界"""

    def __init__(self, name):
        self.name = name
        self.secret_items = {0:'タケコプター', 1:'コンピューターペンシル', 2:'音消しマイク'}

    def hello(self):
        if self.name == "ドラえもん":
            print(f'ぼく、{self.name}')
        else:
            print(f'ドラえもんじゃないよ、{self.name}だよ')
    
    def items(self, num):
        print(f'ジャジャーン、{self.secret_items[num]}')


class Tiba_class(object):
    """千葉県"""

    def __init__(self, name):
        self.name = name
        self.secret_items = {0:'チーズ', 1:'マーガリン', 2:'バター'}

    def hello(self):
            print(f'{self.name}だよ')
    
    def items(self, num):
        print(f'ジャジャーン、{self.secret_items[num]}')


for key, val in {"tokyo_doraemon": Century21("ドラえもん"), "tokyo_dorami": Century21("ドラミ"), "tokyo_mickey": Tiba_class("ミッキー")}.items():
    key = Tokyo_class(val) #インスタンス作成
    key.nobi_house()       #野比家にて四次元ポケットを使う
    key.school()           #学校にて四次元ポケットを使う
    key.gouda_house()      #剛田家にて四次元ポケットを使う

#class Tokyo_class()に注目すると、変数はself.nameである。そして9行のcodeに変数が6回使われたので、
#codeの再利用率は(6-1)/(9-1)で 62% codeを再利用していることになる。
#またこの確率はクラス内の変数とメソッドの結びつきを表す数値とも言える。この数値が高いことがオブジェクト指向を上手く表現できていると言える。

まとめ

#以上のようにしてcodeの再利用率を計算することで再利用性が高いか低いか判断する方法を考えてみた。

Discussion

ログインするとコメントできます