2024年2月12日月曜日

オブジェクト指向が業務に必要ないのか?みたいな記事について

書いてる人も意見してる人もJavaの人だった

この時点でオブジェクト指向にどっぷり浸かってるように感じる

わたしがJavaな人によく言うのはJava以外やってみな?と言うこと

だが、わたしは知っている

一生懸命覚えてプロフェッショナルになった人はそれ以外の言語をなかなか習得せず
他の言語を批判する

だからJavaの人はJava最高で終わってしまう

もちろんVB.netの人もそうだし
C#の人もそうだ
下手したら、Strutsの人はSpring覚えないかもしれない

それだけ業務が忙しく、新しく勉強する時間も無く、教えてくれる人もいないのだろう

さて、ここから本題
オブジェクト思考が要るか要らないかだが
わたし的にはどっちでも良い

それよりもフレームワークの方が大事
メンテしやすいかどうかでフレームワークを選ぶべきだ

個人的見解としてJavaSpringは使いやすいと思う

フレームワークのポリシーを理解していないと
余計な実装しまくることになる

まぁ、原因は何も理解していないプロジェクトリーダーやご意見版を気取る自称スーパープログラマの横槍なのだけど

例えばフロントでシームレスにバリデーションチェックとか

せっかくバックエンドでバリデーターがあるのにそれでは遅いからフロントでやれ!とお達しが来る

理由はお客様からのお達しだ!
上から下に直通な訳だ

バックに渡す前にフロントでシームレスにバリデーションチェックやるなら、バックエンドでも同じことやるので二重チェックになる
JavaScriptからAjax呼び出ししてDBにも負担かけてやることになるわけだ

これが最悪なのはメンテ重ねるとフロントとバックの整合性が合わなくなっていったりする

Javaだけではないのだけど
フレームワークの方針というものがあるのでそれに逆らう実装は本来望ましくはない

そもそもシームレスにバリデーションチェックするという事は結構大変な事だ
ウェブアプリでなくともやるべきではないと思っている

バリデーションは要素の妥当性だけでなく、他の要素との関連チェックもある

フロントでチェックしててもバックで処理してる最中に誰かの操作した事などが起因で現在の状況が変わっててエラーでら返すことになることもある

だからJavaではコントローラで頑張るわけだ
こういうプログラムの手の入れどころを制限する事で新米プログラマの妙な実装も抑止できる

最初に書いた通り
フレームワークは必須
オブジェクト指向ついては、正直どうでも良い

オブジェクト指向と言うのは
新米プログラマでもプログラミングの考え方を定着させる点ではいい考え方だと思う

しかし、Javaはやりすぎじゃね?とも思う
asp.netくらいがちょうど良い気がする
しかし、制約が薄い分
とんでもない実装し出す奴もいる
Javaから来た人はマヂで無駄にクラス作りまくる
要らんからそれと言いたくなる

多分、オブジェクト指向が要らないと言い出す人は
この匙加減のことを言ってるのではなかろうか

DDDに毒された人と言っても良いかもしれない
Javaの人はDDD信者だからなぁ

それと、Goのマイクロサービスで実態作ってしまうとオブジェクト指向要らん!となるかも知れない

Javaの人も一度そう言う現場を見てみるべきだ

わたしはかつてGoのマイクロサービスで
データベースはXMLDBを使い
全体はMVCになっているものを作った
めちゃくちゃ開発効率が高いものが出来た

しかしXML DBも自前で作る必要があることに気がつき、脆弱性にも気がつき、言語もGoからSwiftに変更している最中だ

C、C++、Perlとの付き合いは長いが
わたしは最近の言語を一通り使った上で
Swiftでよくね?と思ったのでやりなおしている

C系はCPU依存がありすぎて
今後ARMのサーバが主流になったらヤバいことになる

あとで苦労したく無いのでRaspberryPiにSwift入れて作り始めているのだ

Web系の技術は脆弱性に関連してどんどん変わってきた
攻撃との追いかけっこでスタンダードの代替わりが激しかった

これからも変わるだろう

SpringSecurityでも2段階認証をもっと簡単に実装する方法を提供できないかと言う議論は見たことがあるし
ゼロトラストについても考えていかないとだし

アンテナ貼りまくって新しいものを学び続けるのはなかなか大変だと思うが
それがプログラマなのだと思う

0 件のコメント: