久々にブログを更新。
ISBNをごにょごにょする事が多かったので、Pythonで作ったのが昨今。それを再度書いた。
概要
ひとまず実装したのは下記の通り。
- ISBN10のチェック関数(check10)
- ISBN13のチェック関数(check13)
- モジュラス11ウェイト10~2関数(modulus11weight10to2)
- モジュラス11ウェイト3関数(modulus11weight3)
- ISBN10をISBN13に変換する関数(encode10to13)
- ISBN13をISBN10に変換する関数(encode13to10)
改善点
- モジュラス11ウェイト10~2関数、モジュラス11ウェイト3関数を別のスクリプトファイルに分けたほうが良さそう。
- エラーハンドリングがなぁなぁな作りになってる。
- 独自のErrorExceptionを作り、送出するのがよさそう。
実装上の問題点と個人的な経緯
- 以前作った際には、wikipediaを参考に、「ハハーン、アウトプットはこうなればいいのね」という軽い気持ちで作ってしまった。(要件満たしてるのでよいのでだけど...根本の考え方がおかしい!)
- 今回は仕様を再確認していたところ、「チェックデジットはモジュラス10ウェイト10~2、モジュラス11ウェイト3を使用」と明記されていることに気づく。
- 結果、モジュラス11ウェイト10~2関数(modulus11weight10to2)とモジュラス11ウェイト3関数(modulus11weight3)を独立して再実装する。
つまり一言で表すと、「仕様の確認漏れ」!反省します。