私は静的型プログラミングの出身であり、動的型プログラミングの背後にある理論的根拠を理解し、動的型言語が私のニーズにより適しているかどうかを確認することに興味があります。
ダックプログラミングの背後にある理論について読んだことがあります。また、コンパイル時のチェックが欠落している動的言語では、単体テスト (静的型プログラミングで望ましく使用される) が必要になることも読みました。
しかし、私はまだ全体像を見逃すことを恐れています。特に、変数の型が誤って変更された場合のミスをどのようにチェックできますか?
Python で非常に簡単な例を作成してみましょう。
#! /usr/bin/env python
userid = 3
defaultname = "foo"
username = raw_input("Enter your name: ")
if username == defaultname:
# Bug: here we meant userid...
username = 2
# Here username can be either an int or a string
# depending on the branch taken.
import re
match_string = re.compile("oo")
if (match_string.match(username)):
print "Match!"
Pylint、pychecker、および pyflakes は、この問題について警告しません。
この種のエラーを処理するPythonicの方法は何ですか?
コードを try/catch でラップする必要がありますか?