OutSystems開発で不便な点(参照渡し、継承、ブランチ)
非常に完成度の高いOutSystemsですが
OutSystems(.Net版)で開発をしていて、不便な点もいくつかあります。
1.引数の参照渡しができない
関数に引数の参照渡しができないので、関数の中で加工した値を取得するには
必ず戻り値で受け取る必要があります。
ObjectやListに複数の関数で値をセットするような処理が書きにくいです。
2.継承、インターフェースが使えない。
継承が使えないので、処理の共通化がうまくできず
同じ処理を何度も書かないといけないケースがありました。
例えば、各EntityにDB更新時刻と更新者のカラムを用意し
共通の更新処理で必ず値を入れるといったよくある処理を書くのに
共通処理をスーパークラスで実装したり
DB更新時刻と更新者をインタフェースで定義する
といったことができないのが不便です。
このせいで、ソースのメンテナンス性が低下しています。
3.バージョン管理でブランチの管理ができない
OutSystemsでは標準でソースのバージョン管理の仕組みが用意されていて
便利なのですが、Gitのようにブランチを切ることができないので
システム稼働後に新機能開発と不具合修正を並行して行うのに苦労しています。
4.ソースの一覧性が低い
これは慣れの問題も大きいですが、フローチャート形式でプログラムを組むのは
ぱっと見てイメージし易い反面、一覧性に劣ると思います。
とくに多数の項目を代入した場合に、アイコンを開かないと代入式を見られないので
修正時やデバッグ時に、どこを直せばいいのか確認するのが大変です。
(一応、Assignのアイコンにカーソルを当てると代入式の一覧がポップアップで表示されるが
カーソルをはずすと消えてしまうし、コピペもできない。)
また、分岐の矢印が結構間違えやすく、よくTrueとFalseを逆にして不具合になっています。
ソースコードで
if {} else {}
と書いてあった方が、直感的に見てわかりやすい気がします。