私は約 10 人の開発者のチームで働いています。一部の開発者は、非常に厳密な書式設定を必要としています。これらの仕様に合わせて構成できるきれいなプリンターを見つけて、ビルド プロセスに追加したいと考えています。このようにして、ソース管理から引き出されたときに他の人がフォーマットをどれほどひどく台無しにしても、それは受け入れられるように見えます.
4 に答える
あなたの問題は、NArrange (ベータ版) を作成する主な目的でした。これにより、C# コードの構成可能な再フォーマットが可能になり、1 つの共通構成ファイルを使用してチーム全体で共有できます。主にクラス内のメンバーの並べ替えと領域の制御に重点が置かれているため、必要な多くの書式設定オプション (特にメンバー コード行内の書式設定) がまだ不足しています。
通常の使用シナリオでは、各開発者がチェックイン前にツールを実行します。ビルド プロセスの一部として実行している人がいるとは知りませんが、コマンド ライン ツールであるため、実行できない理由はありません。私が熟考したアイデアの 1 つは、コミット前の手順の一部としてファイルに対して NArrange を実行することです。チェックインされる元のファイルの内容が、ソース リポジトリ サーバー上の NArrange 形式の出力と一致しない場合、開発者はルールに合わせて再フォーマットしていないため、チェックイン エラーが発生する可能性があります。
詳細については、NArrange を使用した C# コードの整理に関する CodeProject の記事を参照してください。
最も簡単な解決策は、チーム リーダーがフォーマットを義務付け、全員がそれを使用することです。VSのデフォルトはかなり良いです。
Jeff Atwood が Stack Overflow で私たちにそれをしてくれました。最初は反抗しましたが、私はそれを乗り越えました :) すべてがずっと簡単になります!
コーディング標準は間違いなく私たちが持っているものです。私が話しているコーディングのフォーマットは、白髪交じりのアーキテクトによって課せられたもので、たとえば、彼のやり方で設定され、非常に特殊です。人的要因に対処できないことにしましょう。人間のプロセス全体を回避する方法を探していました。
Visual Studio のデフォルトでは、残念ながら改行がうまく処理されません。私はちょうどこのラインチョッピングスタイルを作っていますが....
ServiceLocator.Logger.WriteDefault(string.format("{0}{1}"
,foo
,bar)
,Logging.SuperDuper);
Visual Studio の書式設定の別の例は、あまり熱くありません....
if( foo
&& ( bar
|| baz
|| apples
|| oranges)
&& IsFoo()
&& IsBar() ){
}
Visual Studio はまったくうまく動作しません。このようなものになります。現在、ReSharper を使用してフォーマットをより細かくできるようにしていますが、残念ながら多くの分野でうまくいきません。
コーディング標準は優れていますが、誤解しないでください。ビルド プロセスの一部としてのプリティ プリンターの目標は、人々がどれだけ注意を払ったりスペースを数えたりしても、「完璧な」外観のコードを取得することです。
コードの書式設定に関するエッジ ケースは、明確に定義された文法であるため、非常に解決可能です。
VS のデフォルトに関する限り、私は次のようにしか言えません: BSD スタイルか死か!
それで、私は完全に一周します:C#用の構成可能なきれいなプリンターはありますか?字句解析と構文解析が魅力的であるのと同じくらい、私は YAML C# ツール チェーンを作成することに夢中になりました。
私はジャロッドの答えに二番目です。コーディングの好みが対立する開発者が 2 人いる場合は、チームの残りのメンバーに投票してもらい、上司に多数決を支持してもらいます。
さらに、このようなプリティ プリンターを自動的に適用しようとする場合の問題は、ブランケット コーディング標準が最適または最も読みやすいソリューションではないという例外的なケースが常に存在し、自動化されたツールでそれらを押しつぶしてしまうことです。
コーディング標準はまさに標準です。彼らはそれらをコーディング法やコーディング規則とは呼びませんが、それには十分な理由があります。