EC-CUBEはここが酷い。

最近 EC-CUBE のプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。

  1. 開発者が初歩的な英単語を理解していない。
    • 「check」が「cheek」になっている等、スペルチェックをしていない。
    • 税額を加算する関数がなぜか「sfPreTax」だったりする。加算するのに「Pre」は無いだろう。
  2. 開発者が簡単な論理演算ができない。てか変数名のコピペ複写後の名前変更すらきちんとできない。
    • SQL文で 製品ID が特定の値で、 規格ID1 と 規格ID2 のどちらかがゼロで無い場合。
      ×「product_id = ? AND classcategory_id1 <> 0 AND classcategory_id1 <> 0」
      ○「product_id = ? AND (classcategory_id1 <> 0 OR classcategory_id2 <> 0)」
  3. 開発者がPHPのハッシュ配列を使い慣れていない。
    • ハッシュ配列を使えばデータを簡単に整理できるのになぜか各値を格納する配列をそれぞれ別々に定義して値を入れている。
      例: Array('a' => 1, 'b' => 2, 'c' => 3); とすれば済むところを、
      a[0] = 1; b[0] = 2; c[0] = 3; とかにしてる。
      しかもこの状態で配列要素の追加削除のやりくりをしてる。
  4. 開発者がSmartyテンプレートエンジンを使いこなせていない。
    • {section} でループ回すんじゃなくて {foreach} 使おうよ。
  5. 開発者がウェブフォームがPHPに返す値の書式を理解していない。
    • マスターデータを入力するフォームに空行を入れるとデータが丸ごと一行ズレるような致命的バグがある。
  6. 開発者が料金計算ができない。(超致命的!)
    • 複数商品の価格を税別から計算する計算式がなぜか
      [ 端数処理(単価 * 税率) * 数量 ]
      + [ 端数処理(単価 * 税率) * 数量 ]
      + [ 端数処理(単価 * 税率) * 数量 ]
      + [ 端数処理(単価 * 税率) * 数量 ] = 合計
      になっている。
    • 単価に課税処理してから数量で増したら端数処理の差が累積して大変なことに。
    • ⇒ でも求められる仕様はともかく、間違っているわけでも無いようです。 2009.07.30 追記
  7. EC-CUBE 1.x シリーズと EC-CUBE 2.x のプログラムソースが混在している。
    • 旧世代の遺物が沢山
  8. ファイル名や内部パスの隠蔽が不完全。
    • 画像のサムネを参照する際に内部パスがURLにフルパスで記述されていてお茶吹きました。
  9. controllerのクラスを拡張できるようにしているのに処理段階毎にメソッドを細分化していない。
    • process() メソッドにメイン処理とHTML出力を全部詰め込んだらサブクラス化する際にメソッドを全部書き直すしか方法が無い。
  10. 開発者がWindows環境とUNIX系環境でのパス名の扱いの差を検証していない。
    • Windows用のパス補正コードが意味を成していない。
    • Windows環境に対応させろとは要求しないが、ロジックを分析したらまったく効果が無いことぐらいは実行しなくても分かるだろう。
  11. 開発者がデータベース処理を理解していない。
    • ユニークIDの割り当てがユニークIDを割り当てていない。
      • MySQLでお客様に電話で案内しながらウォークスルーをすると短期間に同じような操作した影響で同じ注文番号が両注文処理に割り当てられ、最後の注文確定時にどちらかがコケる (通常はお客様側がコケる)。
  12. 開発者の個人情報保護意識の欠如
    • 秘密の質問に対する答えが平文保存。
    • その他セキュリティ面で改善する点がわんさか。



国産(日本語表記)でフリーで使えてカスタマイズ次第で使い物になるパッケージは大歓迎なのですが、
このバグの多さは異常。

結局はPHPプログラマがいないとまともなサイトは作れないというオチが。









2009.09.10追記
インディゴWeb研究室様よりトラックバック記事を頂いております。合わせてお読みください。

  1. インディゴWeb研究室 消費税の計算方法と総額表示
  2. EC-CUBE 追記
  3. インディゴWeb研究室 続・消費税計算と総額表示

Q&A

「超致命的」となっているところの計算は開発者の方が正しいが…
たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上げの場合は端数処理の差が累積してしまい、商売上現実的では無くなってしまいます。仕様として正しくても販売形態に見合っていなければ意味がありません。
なぜコミッターになって修正しないの?
EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対して大幅な機能変更が加えられているのでソース比較が難しくなっております。純正ソースに対して修正を出す時間的余力がありませんのでコミッターとしての活動は行っておりません。
それ以前に設計段階での問題がちらほらしているので根本的修正はかなり大きな影響が出そうです。
削除しないの?
削除しません。記事が完全に間違っているなどの問題が無いかぎり原則 削除は行わない主義です。