- ★★Java質問・相談スレッド181★★
775 :デフォルトの名無しさん[]:2018/10/08(月) 08:33:34.55 ID:QRotEnod - 読めるようになれってことじゃないの?
>&&||の右側にインクリメント演算子書いたから場合によって評価されない 例えばこれは、 if(a != null && a.get()>1) こんな行があった時に2つ目の演算でNPE起きない事が保証されると分かれ、ということだろう 書くな、じゃないよ。こんなコードたくさんあるし、こう書かないと冗長になる
|
- ★★Java質問・相談スレッド181★★
777 :デフォルトの名無しさん[]:2018/10/08(月) 08:58:46.13 ID:QRotEnod - まあそれは簡単に言うと
開発時のソースコードはデバッグ出力の行があったりするんだけど リリース時はデバッグ出力の行を文字列置換で一掃したりする。で、もし if(...) debugLog(...); こういう行があったとして、debugLog(...);を置換で削除したら、エラーになる。 if(...){ debugLog(...); } これは置換しても大丈夫。 だから、括弧無しは処理部分を置換する事があるか、による 経験上置換するのはデバッグ系コードだけ
|
- ★★Java質問・相談スレッド181★★
780 :デフォルトの名無しさん[]:2018/10/08(月) 09:55:23.16 ID:QRotEnod - >>779
それは気付いてなかったw じゃあ括弧無しのデメリットは特に思いつかない
|
- ★★Java質問・相談スレッド181★★
783 :デフォルトの名無しさん[]:2018/10/08(月) 12:02:59.41 ID:QRotEnod - 副作用があるかもしれないから、という理由なら条件分岐関係無くない?
if(a == null) return; if(a.get()<=1) return; これでget()呼ぶのも副作用あるかもしれないよね?
|
- ★★Java質問・相談スレッド181★★
785 :デフォルトの名無しさん[]:2018/10/08(月) 12:26:37.42 ID:QRotEnod - ん?こういう理解だけど。参照が渡されてるだけだから
別スレッドが参照を破棄しても関係ないぞ func1(Object a){ if(a == null) return; a.get();//絶対にNPEが起きないマルチスレッド無関係 } func2(Object a){ a = null; }
|
- ★★Java質問・相談スレッド181★★
787 :デフォルトの名無しさん[]:2018/10/08(月) 12:32:49.91 ID:QRotEnod - でも副作用がある関数はset,write,update,createとか大体それっぽい名前ついてるし
分かるでしょ? というか情報処理はCRUDだからcreate,update,delete的な名前が必ずついてる 副作用を広くとらえればログ出力も副作用だけど、そういうのは問題無い getは副作用無しか問題無い副作用のみ、CRUDのRに相当するものだから だからコーディング規約を作るなら、CRUDを意識させるようなものであるべきで、 真理式でメソッドを呼び出すなとかいうわけわからん規約を作るべきではない CRUDのうちRのみ呼び出していい、とすべき
|
- ★★Java質問・相談スレッド181★★
788 :デフォルトの名無しさん[]:2018/10/08(月) 12:37:02.60 ID:QRotEnod - ぶっちゃけCUDでも呼び出していい
結局、意味を捉えて間違えないように書けということでしかない コーディング規約をどういじくってもそこから逃げれるわけじゃない
|
- ★★Java質問・相談スレッド181★★
790 :デフォルトの名無しさん[]:2018/10/08(月) 12:48:22.90 ID:QRotEnod - 真理式に複数の演算があって、かつ一部に副作用があるとまずい、ってことか
|