コロンを使用して2つのステートメントをVisual Basicの同じ行に配置することは悪い習慣と考えられていますか?
コロンを使用してステートメントを組み合わせることに本質的に問題はありません。これは実際にはコンテキストに依存しますが、読みやすさを低下させない限り、問題はありません。
原則として、この目的でコロンを使用することは避けます。 1行に1つのステートメントを記述した方が読みやすいと思います。ただし、これは結腸固有の問題ではありません。 C#またはC++でセミコロンを使用して同じことを行うのは避けます。それは単なる個人的な好みです。
2行を連結することで読みやすさが向上する場合があるため、これは適度な練習としてお勧めします。
線が短くて取るに足らないとき
Option Compare Database: Option Explicit ''My favorite!
rsDataSet.Close: Set rsDataSet= Nothing
以下の場合は行わないでください
If...Then
などの制御構造は、クリーンな状態を保つ必要があります。ブレークポイントを設定するときは、シンプルにしておいてください。一般的には、コードがビジーになるため、この方法はお勧めしません。
ただし、単純なタスクの場合、問題はありません。例えば:
for i = 1 to 10: ProcessFoo(i): next
このような行は、混乱を招かないように十分に短いと思います。
反対側に行きます。コードの密な行が好きではありません。行が結合されていない場合は、コードをスキミングする方が簡単です。
ステートメントを組み合わせると、1つの画面に収まる長い関数を簡単に作成できます。
それは大きな罪ではありません、私はそれが好きではありません。
また、1行Ifステートメントは好きではありません。
私にとっては、「決してこうしてはいけない」と言うべきではなく、単に「これを行うと、起こり得る問題はそのようなものです」と言うべきです。次に、自分の長所と短所を比較検討します。プロはコードの簡潔さ/数行です。時々これは読みやすさを助けることができます。たとえば、一部の人々はこれを使用してvb.Net宣言を行います。
Dim x As Long: x = 1
または待機ループ:
Do Until IE.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop
しかし、明らかにあなたも誰かにそれを荒くすることができます:
Public Sub DoYouKnowWhatThisDoes()
MsgBox Example
End Sub
Private Function Example()
Const s$ = "078243185105164060193114247147243200250160004134202029132090174000215255134164128142"
Const w% = 3: Const l% = 42: Dim i%, r$: For i = 1 To l Step w: r = r & ChrW$(Mid$(s, i, w) Xor Mid$(s, i + l, w)): Next: Example = r
End Function
このアプローチを使用したくないもう1つの実用的な理由は、ブレークポイントです。ブレークポイントは行でのみ設定できます。したがって、同じ行で複数の処理を実行している場合、2番目のものを分離することはできません。最初のステートメントで停止します。 (これは、一部の人が単一行のifを好まない理由の1つでもあります。)デバッグを少し複雑にするだけです。
このため、通常、量産コードではコロンを使用しません。しかし、私はそれらを使用して、フォーラムや他の場所に投稿する「コピー/貼り付け」コードの簡潔さを向上させています。 YMMV :)
これは非常に古い質問であることに気づきましたが、これは私のGoogle検索での最初の結果だったので、ここで鳴き声が許されることを願っています。
このアプローチが実際に役立つ1つの状況(実際に私をここに導いた原因)があり、それが目的の結果を達成する唯一の方法である場合:イミディエイトウィンドウ。イミディエイトウィンドウで実行するコードはすべて1行に収める必要があります。したがって、イミディエイトウィンドウでDo、Case、For、While、またはWithのいずれかの形式を使用するには、コロンを使用する必要があります。
レコードセットを整理して変数を何も設定しない場合にのみ使用しました。 2行ではなく1行で画面に表示されるコード行が増えるため、読みやすさが損なわれることはありません。
以下のような単純な選択ケースで使用されるのを見てきましたが、それは私が行く限りです。
Select Case success
Case ERROR_FILE_NO_ASSOCIATION: msg = "no association"
Case ERROR_FILE_NOT_FOUND: msg = "file not found"
Case ERROR_PATH_NOT_FOUND: msg = "path not found"
Case ERROR_BAD_FORMAT: msg = "bad format"
http://vbnet.mvps.org/index.html?code/system/findexecutable.htm から
それでも、「msg = "の部分を並べました。
それはis私が働いているほとんどのサイトで悪い習慣と考えられています。そして、VB私が一緒に働いた開発者のほとんどによって。そして私の頭の中で。それを見れば、私はほぼ間違いなくそれを変更することを認めるでしょう。そのように見栄えの良いコードを見つけた可能性があることは認めますが、私の生涯でそれが見られるとは思っていません。
また、1行の** If
** sも本当に好きではありません。
どちらも、VGA(640x480)モニターの時代からの二日酔いの可能性が高いです。最近は言い訳になりません。
私がこれまでに取り組んだどの会社でも、これが公式の立場で言及されているのを見たことがありません。しかし、コロンを過度に使用すると、コードが読みにくくなり、維持するのが難しくなると思います。
私は時々自分でこれらを使用する傾向があります。たとえば、最近のプロジェクトの1つでキャンセルを確認するときなどです。
If _bCancel Then Status = CancelProcess() : Return Status
これを配置すると、代替のIFブロックよりもコードが読みやすくなります。
しかし、それは長すぎるかもしれません、私は最近、コロンの使用法を長すぎるようにする例が豊富なプロジェクトを継承しました:
Select Case GetStringValue(Index).Trim.ToLower
Case "yes", "y" : GetBooleanValue = True
Case "no", "n" : GetBooleanValue = False
Case Else : GetBooleanValue = Nothing
End Select
個人的に私は上記が少し多いと思います。
私はこれが好き
Using pro As New Process() : With pro
...
End With
End Using
継承を使用するとき、またはインターフェースを実装するときに、クラス宣言で使用されるのを見てきました。
Public Class DerivedClass : Inherits BaseClass
...
End Class
しかし、他の人のように、私もその使用を思いとどまらせます。
クリス