失敗談 技術

悪いほうが良い? でも限度があるよね。。

投稿日:

自分のその時の状態によって結論が変わる

https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00620/040900010/
を見て書こうと思いました。

今やってる仕事は、いわゆるシステムのリプレース案件(Webアプリ)だったりします。

なぜリプレースするかといえば、システムで新しい要件が追加される予定なのを小手先で切り抜けるのではなく、もっと自動化しようという理由です。

中身がきれいだったらリプレースしなくていいのでは

そのシステムはJavaで出来ていて、seasea2が使われてます。通常なら、真っ当に設計してあれば、そのシステムに追加すればいいはずなのですが。。

「独特の」設計をしているので、修正がしにくいです。以下の感じ。

  • コントローラの関数が700行に及ぶ
    • 一番の中心処理はコントローラにべた書きしてある。関数分けさえしてない。
  • 関数がコピペでできている
    • しかも同じパターンで3回ぐらいコピーされてる感じ
  • DTO(Data Transfer Object )がたくさんあるが使われてない
    • 関数全部にDTOが引数、戻り値に設定されてる
    • そういうもんですかね。。まぁ議論があるかもしれませんがDTOはインタフェースを合わせる目的で設定するならともかく、全部の関数にDTO設定しても意味ないと思うのですが。
  • ログがたくさん出ているのでコードが見ずらい
    • これも議論があると思いますが、あまりにログだけ出してもな。。
    • APIの入出力とかは必要だけど、他のdebugログとかはどうですかね。。
  • 「未設定」という仕様がある
    • ある名称をAPIから引っ張ってきて表示する仕様になってるが「未設定」とででくる、、、仕様だそうだ。意味が分からない。それなら出力しなきゃいいだろうに。
  • if文の嵐
    • インデントが深すぎる。最近のプログラムの作成方法ではインデントは深くしないのが普通です。
  • DAOの自動生成を使わず、全部自分でSQL文を書いてある
    • S2Daoは自動生成できるはずなのに、なぜか全部SQL文を記述してある。
    • これも議論はあると思うけど、ありきたりのものだと、自分で書く意味ないんじゃ。。コーディンクに無駄な時間がかかるだけだ。コーディングはしないで済むならしない方がいい。
  • オブジェクト指向設計がほぼ見られない
    • 構造化設計、というよりコントローラにべた書きしただけなんじゃ。。
  • DB設計方針が不思議
    • いまどきIPアドレスを格納するのに、4オクテットを別々のカラムに切り出すのはどうですかね。。しかもIPアドレスを数値として、別の1カラムに入れてあるという。。二重にしただけやんけ。間違いが増えるだけだろう。
    • 理由は「検索に遅いから」ということらしい(と作業メモに書いてあった)がんなわけはないだろう。
    • 実際、私が今実装しているのでは全然そんなことはない。

ちょっといい所

結局、それをpython(Django)に入れ替える方針になりました。疑問に思う点はありますが、いい所もあります。

  • ログがすべてメッセージ化してある
    • LOGIN_TEXT=’ログインしました’ 、みたいな画面表示する文言をちゃんとメッセージ化してある。 ActionMessages というものらしい。
    • Djangoにもあるので作れるのだが、、私がめんどくさがり屋なので今のところ使っていない。
    • あれって、二か国語(日本語と英語)を使用するようなところは必須だと思うけど、日本語だけだと意味薄いよなーと思って使用してません。
    • 使用してないけど、その習慣は悪くない。

ぐらいしか思いつかない。。

なんでseaser2からああなったか、というぐらい、、ちょっと悲しい状態になってる。

結局完全とっかえ

してます。

まず仕様見る。分からなかったらJava見る、みたいな感じで開発してます。。

-失敗談, 技術

執筆者:

関連記事

Python3 – django-webtest

忙しいので断片だけ。。 DjangoでWebブラウザからアクセスする感じでテストする、やり方の一つです。以前にやったように、 Seleniumからやってもいいのすが、そこまでじゃない場合の単体テスト方 …

退職エントリー

はじめに 前の会社を退職しました。 輝かしい退職エントリーとはならないですが、忘れないように書いておきます。 そもそもどんな人? 結構年を食ってる。単なるプログラマ。平社員。コネとか何もありません。趣 …

顔画像のモザイク方法(python + OpenCV + face_recognition)

Python3での顔画像モザイク方法 python3での顔画像モザイクの方法を調べてみました。 仕事とは関係なく、単なる趣味だったりしますが。。 この内容で、Djangoと統合する予定です。 Open …

Rustのお勉強をしてみる(XMLRPCクライアント編)

なんとなく手付かずだったので、Rustの勉強をしてみようと思います。 手始めとして、なぜかXMLRPCクライアントを作ってみます。 環境 WSL2 Ubuntu 22.04 LTS Rustインストー …

キーボード買った(Maestro2S 日本語配列)

キーボード購入 キーボードが完全にいかれたので新しいキーボードを買ってきました。 Maestro2S 日本語配列 Maestro2S 日本語配列 です。 画像 実は以前のキーボードとほぼ同じです。違う …

google オプトアウト Click here to opt-out.