見出し画像

Javaの基本を知らないapex開発者

LINEのオープンチャットのSalesforceのルームでユニークな質問を見かけました。

質問です。現在テストクラスを作成していまして、対象のクラス名.メソッド名にパラメータを渡して確認しようとしているのですが、エラーが発生し直訳でメソッドがないと言われます。対象のクラスの中にテストクラスで宣言したメソッドがあることは確認済みです。どう言った原因があるのかわかる方いませんでしょうか?

いろいろとアドバイスをしている方はいらっしゃったのですが、どうも、個人的にはピンとくる回答がなかったです。
Salesforceの開発コンソールはコード補完機能があるので、普通のテストクラスのコードを書いていたら、こんな事態には陥りませんし、開発コンソールのProblemsに警告が出ます。
多分ですけど、テストクラス内で呼び出すクラスのインスタンス化をしていません。
呼び出すクラスのインスタンス化をちゃんとしていたら、開発エディタでコード補完が働かないと変だなと気づくのがちゃんとしたJavaやMSのC#、VB育ちです。
apexはインスタンス化をしないでもテストクラスでクラス内のメソッドを呼び出すことは可能なようですがね。
ここはたしかにJavaでも言語の仕様としてはあるんですが、実際のところクラス変数にテストクラスからアクセスすることが多いので、クラスのインスタンス化をしないのはありえないですけどね。

さらにちょっとひどいapexのコードを見たのですが、変数のスコープがめちゃくちゃでメソッドの先頭でまとめて初期化宣言をしていないコード。Javaの開発プロジェクトだったら、その開発者はどうなるか?そのプロジェクトいやベンダー・発注元を出禁にされます。厳密なJavaコンパイラだとコンパイルが通るからわからないコードを書くのはいりません。apexは結構、コンパイルが甘いというか、これは開発ツールとしての仕様としては理解できますし、作業中にできないと不便なんですが、保存はコードが間違っていてもapexは保存ができる。さらにapexクラスは明示的なコンパイルがない。いい加減なコードでも動けばOKになるというか、テストクラス自体はとりあえずRunができる。

書いておくか回答も。

メソッドがprivateで宣言されていませんか?

=>コード補完が働かないので気づくはずです

あとはデプロイ忘れとかもあるかもしれないです。


=>Problemsを参照すればわかります

Salesforceは開発者のスキルのレベルがERP、基幹系Java開発者と比較すると低いと思います。
これは邪推ですがSalesforce社はそこを認識していてapexクラスをデプロイするためにはテストクラスが必要にしてコードカバレッジ、テスト成功の率を設けたと思います。
ここが問題ですが、SalesforceプロジェクトのオーナーはそのSalesforce社の意図・意思を気づいていない。
前に書いた渋ちんのSalesforceプロジェクトのオーナー(20230315-Salesforce業界は渋ちんが多い)は開発者を理解できない、いや開発者のスキルのレベルを理解できない。
それとSalesforceで小規模だとわりとなんでも屋がいるようですが、本来、Salasforce社のスキルトラックだとシステム管理者、開発者は別です。
さらに開発者もフォーム、レポート、ダッシュボード、Visualforce、apexだと一緒ではないんですよね。
Salesforceのプロジェクトのオーナーでもここをちゃんと理解している方はかなり希少ではないでしょうか?
特にSalesforce案件の人買いでまともにSalesforceをわかっているのは見たことがありません。
Python、PHP業界よりひどい。
自分で1単元でもいいからTrailheadをやれと言いたい。

わたしはSalesforce業界からは去ります。これならクラウドのERP、基幹系システムの業界の方がはるかにまし。2000年対応のときの急ぎ仕事だったERP業界ですら、こんなにレベルは低くはなかった。

このレベルが理解できないでapexをやるのはよくないと思いますよ。

この記事が気に入ったらサポートをしてみませんか?