配列と別れる50の方法《01》JPL の事例から

記事一覧if 篇for 篇配列 篇

Python.use(better) # OOP への道 《Python3.1, Jython2.5.0, IronPython2.6.x》
JPL の事例から

《著》真樹育未・後藤いるか・小粒ちゃん《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1988/10/12 ● 第1版♪1993/05/23 ● 第2版♪2003/05/25

■ 概要

配列はいくつかの問題を抱え「コードを汚染」する一因になり「バグの温床」になりがちです。

伝統的なC言語風の for 文や悪名高い switch 文、配列の呪縛から解かれ、オブジェクト指向プログラミング〔OOP〕の醍醐味を堪能するための準備を行います。

何が問題か

Java 言語の解説書 JPL には、伝統的な配列を利用した事例を紹介しています。しかし、配列はいくつかの問題を抱え、「コードを汚染」する一因になり「バグの温床」になりがちです。そこで、その問題点を明らかにするとともに、それを解消する術を紹介します。

事例:JPL, pp.19-20

JPL の読者の多くは、以下の事例によって、配列を知ることでしょう。
承前

配列の隘路

》作業中です《

■ for 文(伝統的な for 文への未練)
def average(values):
    if values == None:
        raise ValueError()
    elif len(values) == 0:
        raise ValueError()
    else:
        sum = 0.0
        for i in range(len(values)):
            sum += values[i]     # (@.@) ... is a bit worrying
        return sum / len(values)
■ for 文
def average(values):
    if not values:
        raise ValueError()
    else:
        sum = 0.0
        for e in values:
            sum += e     # (^.^) ... out of danger
        return sum / len(values)
from functools import reduce
def average(values):
    if not values:
        raise ValueError()
    else:
        return reduce(lambda s,e: s+e, values, 0) / len(values)
def average(values):
    if not values:
        raise ValueError()
    else:
        return sum(values) / len(values)

Tips

》作業中です《


Last updated♪2009/07/11