使用ref
は悪いプログラミングの実践ですか? 実際に ref を多用する古いコードのリファクタリングを行っています。Microsoft All Rules セットでコード分析を有効にしましたが、ルールは「参照によって型を渡さないでください」と言っています
原因: パブリック型のパブリック メソッドまたはプロテクト メソッドに、プリミティブ型、参照型、または組み込み型以外の値型を受け取る ref パラメータがあります。
なぜそれは本当に悪いのですか?これらをプライベート メソッドまたは内部メソッドで使用できますか? プライベート/内部メソッドで ref を使用することは、プログラミングの良い練習になりますか?
編集:ここにいくつかのサンプルがあります、
public void DoAutoScrollReverse(Rectangle rectangle, int xPosition, int yPosition,
ref int deltaX, ref int deltaY)
{
}
public bool GetPointCoords(Graphics g, Point pMouse, DisplayBlock2D aBlock,
ref Point3MD pt, ref DisplayPoint2D 2dPoint, ref double gapPos)
{
}
これらの関数内で起こっていることは、それらが初期化、設定、またはその他のものであることです。
更新:なぜ ref を使用しているのですか? 実は私はそうではありません。リファクタリングが必要な古いコード。いくつかのメソッドを削除しましたが、2 番目の例のような複雑な関数はできません。bool を返す (操作が成功したかどうかを伝える) 関数があり、異なるオブジェクトの 3 つの ref 値があります。ここで何をすべきですか?プライベート/内部にする (プライベート/内部の良い実践で ref を使用していますか?)