静的型と読みやすいコードについて

Static Typing and Readable Code」という記事の話。Matzにっきより。

「コードに型の情報があったほうが読みやすいんじゃないの?」という、静的型に慣れたプログラマが必ず持つはずの懸念について書いている。実際、俺もCとJavaをメインで使ってきたから、ここは心配しているところである。

で、くだんの記事ではStrutsとSpringを使ったレコードの検索処理と、同じものをRuby on Railsで書いたコードを並べて比較している。

Struts+Spring

public ActionForward edit(ActionMapping mapping, ActionForm form,
                          HttpServletRequest request,
                          HttpServletResponse response) throws Exception {
    PersonForm personForm = (PersonForm) form;
    if (personForm.getId() != null) {
        PersonManager mgr = (PersonManager) getBean("personManager");
        Person person = mgr.getPerson(personForm.getId());
        personForm = (PersonForm) convert(person);
        updateFormBean(mapping, request, personForm);
    }
    return mapping.findForward("edit");
}

続けて、RoR

def edit
  @person = Person.find(params[:id])
end

俺は静的型のほうがコードは読みやすかろうと思っているのだが、これらを見比べるとそうも言えなくなってしまうな。

結論としては、コードを読みやすくするのは言語じゃなくてプログラマである、としている。だから、静的か動的かで読みやすさは決まらない、ということだな。

ここにあるのは優劣の差ではなくスタンスの違いだ。Struts+SpringはMartin Fowler氏が言うところの"銃で自分の足を打ち抜かないようにする"ための努力をしている。これに対して、RoRはそんな初歩的なミスなど無いという前提で冗長な情報を削りに削っている。

もしまた俺にWebアプリケーションの開発案件が舞い込んできたら、そのとき使うのは・・・うーん・・・Struts+Springかな!だって、巷には自分たちの足にショットガンぶち込む連中ばかりいるもんな!あははは!!

orz

あぁ、もちろん他の選択肢もあるけどな。