メモ書き、ネタ帳|DEAD CODE COOKBOOK
DEAD CODE COOKBOOK のスクラップ。
まだまだ完成していないので、メモ書きなどを記載していく。
アイディア等も募集中。
Javaの静的解析ツールって何がいいんだろう?
「呼ばれないデストラクタ」というレシピを加えたいが、書ける気がしないから入れていない
スレッド、非同期、ロック、マクロあたりのレシピも書きたいが、書ける気がしないから入れていない
exit
メモ
exit
は、多くのプログラミング言語で、処理(プロセス)を終了させるために使われる。
呼出により直ちに処理を終了させる目的の関数という点は共通しているが、
後処理の制御の有無 と、リターンコード返却方法 はプログラミング言語毎に異なり、また、プログラミング言語内で、複数の exit
が用意されている事が多い。
後処理があるexitは、エラーハンドリングを例外処理と同様に行うことが多く、 throw後のコードのレシピ で利用される機能との厳密な区別が難しいが、ほとんどのプログラミング言語では、例外処理とは別にリターンコードを利用した中断方法を提供しているので、違和感はない?はず。
ただし、リターンコードを意識した例外処理を伴うプログラミングを行う時の使い分けは難しい。これは本書の対象外
Pythonには3つの exit
関数がある[1]。
ランタイムエラーも合わせて、後処理、終了時の出力内容(標準出力かどうか)、終了コード、出力をいつするか?(終了時、呼び出し時)あたりで、表でまとめてみる。自分用のためにも
Rubyはexit.exit!,abort
node.jsはprocess.exit。ブラウザについても言及
java は exit とhaltか。
panicは他のgoroutineの終了を待たずにプログラム全体が終了します.
runtime.Goexitは他のgoroutineが終了するのを見届けてから終了します.
あ、この違いは他の言語でもありそう。(聞き覚えある。。)
標準出力に関して、デッドコードとの関わりはないかな?ないか。
exitを使うと、「呼ばれないファイナリー」というレシピが作れる。パワーワードだし、exit後のコードとは、別レシピとしよう。
JavaってDIでゾンビ作れる?
awaitが付いてない呼び出し?
今、レシピを作るうえで、
原因 -> 対策
を記載している部分があるが、ここの記載を難しく感じている。
ただ、実際のバグ管理では、原因や対策をコードから選ぶ現場もあるし、
そこのコードレベルでここを整理することで、何か得られるか?
(何かいい参考資料とか(現場以外で)あるかな?)
ただ、原因コードや対策コードをしっかり記入できるのは、基となる設計書ありきなので、
本書の整理とは少しずれがあるはず。ただ、本書としてやっぱり整理しておきたい。
rustメモ
同じオブジェクトの==でtrueにならないことがある⇒部分同値関係
doctestのスコープってどうなるのか。(特にRust)。未使用パターンに対して、doctestってできるか?
rustのFnOnceという概念
要求されないイテレータアダプタ。rustでは警告。