プログラミングルヌルDelcam International plc

読むのが楜しいトピックCodeの著者は、良いコヌドを曞くためのルヌルを共有し、最終的に「他にどんなルヌルを䜿甚しおいたすか」ず尋ねたした。 コヌドを読みやすくする方法は」 私の指先には、数幎前に働いおいた1぀の倧きな英語オフィスDelcam International plcからのドキュメントがありたす。このドキュメントは、CAD / CAMシステムを開発しおおり、䞖界䞭の数千人ではないにしおも数癟人のプログラマヌを雇甚しおいたす。



圓然のこずながら、数千キロメヌトル離れた異なる蚀語を話し、特に異なる考え方を持぀このような倚数のプログラマヌの効果的な䜜業を線成するために、䌚瀟はプログラマヌがコヌドを曞くずきに遵守しなければならない芏則を採甚したした。 埓業員は、仕事に応募する際にこれらのルヌルを䞎えられたす。埓業員はルヌルをよく理解し、順守しなければなりたせん。 ルヌルは、基本的なコヌドのフォヌマットや倉数の呜名など、倚くの分野をカバヌしおいたす。



それらのいく぀かは明癜に芋えるかもしれたせん、いく぀かは非垞に物議を醞す、いく぀かは非垞に有甚です。 しかし、いずれにせよ、これは倧䌁業の経隓であり、導入されお以来、これには理由がありたした。 自分に圹立぀こずを孊んだり、チヌムでそれらのいく぀かを玹介したりするこずで、チヌムずしおより効果的に仕事ができるようになりたす。





C ++でプログラミングするための䞀連のルヌルずガむド



Delcam International plcにお










1 はじめに

2 基本的なルヌルず掚奚事項

3぀の呜名芏則

4 コヌド圢匏ずテキスト圢匏

5 コメント

6 制埡オペレヌタヌ

7 ファむル

8 プリプロセッサ

9 クラス

10 倉数

11 機胜

12 コンストラクタ/デストラクタ/割り圓お挔算子

13 型キャスト

14 メモリの割り圓おず削陀

15のフレンドリヌなクラスずフレンドリヌな機胜

16 ポヌタブルコヌドの蚘述

付録Aコヌドのフォヌマットの䟋












1 はじめに

1. 1件





このドキュメントは、Delcam International plcのC ++プログラミングのルヌルずガむドのセットです。 䌚瀟ずしおの私たちの目暙は、維持しやすい正しいプログラムを䜜成するこずです著者ず他のプログラマヌの䞡方が。 したがっお、この暙準の目的は、すべおのDelcamコヌドを䜜成するこずです。



  1. 保守が簡単理解しやすい。 可胜な限り明確でシンプルな; 䞀貫したスタむル。 信頌性゚ラヌなし; サポヌト䞭の゚ラヌに察する耐性。 テストが簡単。
  2. 結合さたざたなプラットフォヌムおよびコンパむラヌぞの移怍甚に蚭蚈されおいたす。 リサむクル可胜。






執筆の倧郚分は日垞の緎習に掚奚されおいるため、この文曞は䞻にDelcamで働くプログラマヌを察象ずしおいたす。ホヌムツヌル、゜フトりェア、緎習、習慣などぞの頻繁に芋られるリンクは受け入れられたせん。



1. 2぀の゜ヌスず目暙



この暙準の準備では、いく぀かの曞籍ずドキュメントが䜿甚されたした。





゚レムテル

Mats HenricsonおよびEric Nyquist、 プログラミング

C ++、ルヌルず掚奚事項 、Ellemtel Telecommunication System

研究所



腕

マヌガレット・゚リスずビャルン・ストラりストルプ、

泚釈付きC ++リファレンスマニュアルAddison Wesley





方針

Ed Lambourne、 Delcam゜フトりェア開発ポリシヌ 、

内郚メモDelcam International Plc。



cppstd

デむビッド・ダニングトン他、 cppstd䞍満ファむル 、

内郚文曞Delcam International Plc。





哲孊

Paul Davies、David Dunnington、 デヌタモデルプログラミング

哲孊 、内郚文曞Delcam International Plc。



マグワむア

スティヌブマグワむア、 ゜リッドコヌドの䜜成





ワリン

Steve Oualline、 C Elements of Style 、MT

出版



ホッブズ



Steve Hobbs、 Delcam Draft Cプログラミング暙準 、

Delcam International Plc。



Ellemtel は優れた情報源です。ほがすべおの芏則ず掚奚事項がこのドキュメントず亀差しおいたす。 貎重な情報源はcppstdの䞍満ファむルでもあり、豊富な情報を提䟛したした。 cppstdに携わったすべおの人、特にPaul Davies に最も貢献しお くれた人に感謝したす 。

この暙準にはトレヌニング情報がほずんどありたせん。 基本的な構成、構文、およびC ++の䜿甚に粟通しおいるこずを前提ずしおいたす。 ゜フトりェアの蚭蚈ず開発の問題も、このドキュメントの範囲倖です。 蚀語の初心者は、同様の情報に぀いお本を参照するこずをお勧めしたす。 始めるには、 Keith WeiskampずBryan FlamigAcademic Pressによる The Complete C ++ Primerを 詊しおください 。 ゜フトりェア開発に関する優れた本は 、Bertrand MeyerによるObject Oriented Software Constructionです。





1. 3ルヌルず掚奚事項



暙準ぞの違反には、ルヌル違反ず掚奚事項違反の2皮類がありたす。 ルヌルの特城



定矩

埓うべき指瀺。 文字通りの意味で、ルヌルは今埌の目暙の1぀になりたすはじめに説明したす。





䟋倖

このドキュメントで説明されおいる䟋倖のみが蚱可されたす。 各ルヌルは、考えられるすべおの䟋倖を文曞化したす。 新しい䟋倖ず倉曎が議論される堎合があり、その結果、このドキュメントに反映されたす。



匷制

コヌドを受け入れる委員䌚は、ルヌルに違反する堎合、コヌドを拒吊する必芁がありたす。





管理

コヌドは、自動テストおよび/たたはチェックを受ける堎合がありたす。



掚奚事項の特城



定矩

正圓な理由がない堎合に埓うべきアドバむス。 掚奚事項に同意しないこずは正圓な理由ではありたせん。 掚奚事項は、将来的には芏則に入る傟向があるずいう事実から策定されたす。





䟋倖

重芁な䟋倖は、個々の掚奚事項ずずもに文曞化されるこずがよくありたす。 理由が正しいかどうかわからない堎合は、暙準の管理者ずこの問題に぀いお話し合っおください。



匷制

掚奚事項の違反を支持する準備をしおください。





管理

コヌドは、自動テストおよび/たたはチェックを受ける堎合がありたす。





ルヌルや掚奚事項が間違っおいるず思われる堎合は、それらを無芖するよりも倉曎するこずをお勧めしたす。 この声明には、ポリシヌが匷調されおいたす。 7。

叀いコヌドを再フォヌマットたたは曞き換える必芁はありたせん。 サポヌト䞭にコヌドを倉曎する必芁がある堎合は、暙準ず䞀臎する倉曎を行うこずをお勧めしたすただし矩務ではありたせん。 展開時に叀いコヌドで䜿甚されおいた曞匏蚭定方法を保存できたすが、倉曎を行うずきは、曞匏蚭定に関係のない芏則ず掚奚事項に埓っおください。





1. 4組織



  この文曞の著者は人々であり別の蚀い方をするにもかかわらず、理想的ではありたせん。 このドキュメントは開発される予定であり、今埌改善される予定です。

暙準の進化を促進するために、ドキュメントバヌゞョンコントロヌルは、アむテム名cppstdC-Plus-Plus-STandarDを䜿甚しおグリヌプシステムによっお実装されたす。 cppstdの詳现に぀いおは、「gripe -doc」ず入力しお「gripe」ず「gripe cppstd -help」ず入力しおください。 コメント、質問、提案などは䞍満を通しお蚘録されるべきです。

ルヌルず掚奚事項は、叀くなった数字を凊理しないように、数字ではなくキヌワヌドによっお䞎えられたす。









各ルヌルず掚奚事項には、「簡朔なフォヌム」ず远加テキストのブロックがありたす。 远加のテキストには、「簡朔なフォヌム」ず同じくらい重芁であり、無芖しおはならない远加の条項、免責事項、および/たたは䟋倖が含たれる堎合がありたす。






2 基本的なルヌルず掚奚事項



2. 1ポリシヌガむド





r-gen-goldenゎヌルデンルヌルに埓いたす。

ルヌルに違反するたびに、これを明確に文曞化する必芁がありたす。 違反は、暙準をサポヌトする人々によっお承認される必芁があり、その結果、倉曎されたす。





s-gen-duplコヌドを耇補しないでください。

コヌドの重耇は臎呜的な眪ず芋なされたす。 2぀の関数に共通の個別のコヌド

機胜。 可胜な限り既存のクラスラむブラリを䜿甚したす。 特に、2぀の暙準クラスラむブラリが重芁です。

Delcamutils.dev。これには、C ++暙準では䜿甚できない゜フトりェアたずえば、抜象文字列クラスず、 オブゞェクトを栌玍するための基本的な抜象デヌタ型を 含む e r.devが含たれたす。



s-gen-reuse再利甚可胜なコヌドを開発したす。

可胜な限り、゜フトりェアは、明確に定矩され、明確に蚘述されたむンタヌフェむスを備えた関連ツヌルラむブラリのコンテキストで開発する必芁がありたす。 ラむブラリは、明確で文曞化された階局的な方法でリンクする必芁がありたす。





s-gen-simpleコヌドをシンプルにしたす。

「平均的な」プログラマヌ向けのコヌドを䜜成したす。 スマヌトコヌドは理解しにくいため、少ない

再利甚可胜で保守が難しい。 垞にシンプルさず読みやすさを重芖したす。 文献では、これはキス「シンプルに保぀、愚かな」原則ずしお知られおいたす。



s-gen-testテストコヌドを蚘述しおテストしたす。

チェックの匷固なサブシステムを䜜成し、埌で䜿甚したす。 小さなコヌドを曞いおテストしたす。 デバッガをより頻繁に䜿甚しお、コヌドをステップごずに調べおください。゚ラヌが発生するたで埅たないでください。 ゚ラヌが芋぀かったらすぐに修正し、症状ではなく原因を陀去したす。







2. 2基本的なラむティングガむド

プログラムの





s-gen-mcプラットフォヌム䟝存のコヌドを1か所に配眮したす。

プラットフォヌム固有のコヌドを特別なファむルに配眮したす。 Delcamでは、これはapsl.dev/apsl/machine.hです。





s-gen-compコンパむラの゚ラヌのためにコヌドを倉曎する必芁がある堎合、コメント

これを指摘するコヌドは、コンパむラに関する詳现を提䟛したす。

「gripe cppbug」を䜿甚しお゚ラヌをコンパむラに報告し、修正するための手順を実行できるようにしたす。



s-gen-opt必芁な堎合にのみコヌドを最適化したす。

パフォヌマンスの問題があるこずがわかっおいる堎合にのみ、コヌドを最適化したす。 プログラムが遅すぎる堎合は、最適化を開始する前にgroff ++たたは同等のツヌルを䜿甚しお問題の正確な原因を特定したす。





s-gen-warnすべおのコンパむラ譊告を蚱可したす。

可胜であれば、コンパむラの譊告をアクティブにしお、゚ラヌをロヌカラむズし、コンパむラの新しいバヌゞョンごずに曞き換える必芁のあるコヌドの郚分を枛らしたす今日の譊告は明日゚ラヌになるこずが倚いため。

䟋Cfrontベヌスのコンパむラを䜿甚しお、+ wフラグを䜿甚しおコンパむルし、可胜な限り削陀したす

譊告。



s-gen-asser tアサヌションを䜿甚しおコヌドをテストしたす。

アサヌションに぀いおは、Maguireで説明されおいたす。 Delcamでのアサヌションの実装は、utils.dev / utils / ut_assert.hにあり、d0170400で説明されおいたす。







バグの発芋ずテスト手順に関する远加のヘルプは、Maguireにありたす。








3぀の 呜名芏則





意味のある名前を遞択するこずは、読みやすいコヌドを曞く䞊で重芁な郚分です。 呜名芏則を䞀貫しお䜿甚するず、コヌドの可読性が向䞊し、人がプログラムの構造をすばやく理解できるようになりたす。 別の芁件は、名前の競合のリスクを最小限に抑えるための順序を確立するこずです。 このセクションでは、読みやすさ、䞀貫性を促進し、倧芏暡開発をサポヌトするために蚭蚈された呜名芏則に぀いお説明したす。 以䞋のドキュメントでは、タむプはクラス、列挙型、たたはタむプ定矩です。



3. 1ラむブラリプレフィックス



すべおのファむルずその内容クラス、関数などは特定のラむブラリに属したす。







r-nam-libpx各ラむブラリにプレフィックスを割り圓おたす。

各ラむブラリは、このラむブラリの䞀意の2文字たたは3文字のプレフィックスに関連付ける必芁がありたす。 プレフィックス文字は小文字でなければなりたせん。



r-nam-globすべおのグロヌバル名にラむブラリプレフィックスを䜿甚したす。

ラむブラリ内のオブゞェクトがグロヌバルネヌムスペヌスの䞀郚である堎合、その名前はラむブラリプレフィックスで始たる必芁がありたす。







名前をプレフィックスで構成する方法に関する芏則は、次のセクションで説明したす。 著者たたはサポヌト担圓者の責任は、ラむブラリ内で名前の競合がないこずを確認するこずです。 プレフィックスは、ラむブラリの倖郚での名前の競合をできれば防ぎたす。



3. 2型、倉数、関数、マクロの名前



次のルヌルは、さたざたなオブゞェクトに名前を付ける方法を説明しおいたす。 䟋は、ラむブラリプレフィックスがz z であるずいう仮定の䞋で䞎えられおいたす 。







r-nam-typeタむプ名は倧文字で始たりたす。

型名は小さな文字で曞かれ、新しい単語はそれぞれ倧文字で始たりたす。 アンダヌスコアを含めるこずはできたせん。 名前の前には、小文字の接頭蟞を付ける必芁がありたす。 ネストされたクラス/列挙型enumはたれであり、SGIおよびHPコンパむラで問題が発生する可胜性があるため、それらの䜿甚は掚奚されたせん。 ただし、それらを䜿甚する堎合は、コンパむラの問題のためにグロヌバルクラス名に぀いおは、それらの名前を遞択する必芁がありたす。

䟋class zzMyClass {

...





r-nam-var倉数、ロヌカル定数、および関数匕数の呜名に぀いおは、芏定の方法に埓っおください。

倉数、ロヌカル定数、および関数の匕数の名前は、単語を1぀のアンダヌスコアで区切った小さな文字で蚘述されたす。 プレフィックスは次のようになりたす。









䟋const int local_const; 䟋

int local_var; 䟋int zz_global_var; 䟋int m_member_var; 䟋

static int s_static_member_var; //掚奚

䟋void fint a_argument;

//掚奚





r-nam-glconグロヌバル定数ず列挙定数enumの名前は倧文字で曞かれおいたす。

単語を区切るには、アンダヌスコアを1぀䜿甚したす。 プレフィックスは小文字でなければなりたせん。 䟋

const int zzGLOBAL_CONST;

䟋enum zzKind {zzONE_KIND、

..



r-nam-func関数名は小文字で曞かれおいたす。

単語を区切るには、アンダヌスコアを1぀䜿甚したす。 グロヌバル関数の前には小文字の接頭蟞が付き、その埌にアンダヌスコアが続きたす。 クラスメンバ関数はプレフィックスを必芁ずしたせん。 䟋倖r-nam-farg。



䟋倖r-nam-fclass。



r-nam-fargプレフィックスを含む型匕数がグロヌバル関数に枡される堎合、関数名にプレフィックスを远加する必芁はありたせん。

この堎合の名前の競合のリスクは非垞に小さいです。 これにより、プログラマヌは、名前を接頭蟞で構文的に混乱させるこずなく、クラスに密接に関連する関数を䜜成できたす。 たずえば、クラス 'int zzClass :: fconst'およびフレンドリ関数 'int fconst zzClass'のメンバヌ関数を宣蚀するず、むンスタンスが匏の評䟡に関䞎する堎合に構文を簡玠化できたす。

「i =a + b.f」は「i = fa + b」に眮き換えられたす。 䟋void zzClass :: member; 䟋

void zz_global_func;

䟋void global_funcconst

zzClass;





r-nam-fclass型名が関数名の䞀郚である堎合、型名は型定矩のずおりに蚘述する必芁がありたす倧文字を含む。

型が関数ず同じラむブラリで宣蚀されおいる堎合、関数名に远加のラむブラリプレフィックスを远加する必芁はありたせん。 それはすでにクラス名に含たれおおり、r-nam-fargのように、他のラむブラリず名前が競合するリスクは非垞に小さいです。 䟋void test_zzClass; 䟋void zzClass :: member;

䟋void zz_global_func;

䟋void global_funcconst

zzClass;



s-nam-funcstd䜿甚

クラスメンバ関数の暙準名存圚する堎合。

いく぀かのクラスメンバヌ関数

倚くのクラスに共通しおおり、それらの名前は暙準化されおいたすを参照

セクション12.2.1。 アクセス関数がタむプ<zzAttrib>のクラス<attrib>の属性を蚭定する堎合

プロトタむプvoid set_ <attrib>const <zzAttrib>が必芁です;。

アクセス関数が属性を返す堎合、プロトタむプが必芁です

const <zzAttrib><attrib>constたたは<zzAttrib> <attrib>

属性に代入挔算子ずコピヌコンストラクタヌがある堎合はconst

セクション12.3を参照。



r-nam-macroマクロ名は倧文字です。

単語を区切るには、アンダヌスコアを1぀䜿甚したす。 ラむブラリプレフィックスは倧文字で入力し、その埌にアンダヌスコアを入力する必芁がありたす。 r-def-minusd§8も参照しおください。 䟋倖ヘッダヌファむルのむンクルヌドの防止に関係するマクロ定矩は、r-cpp-ifdef§8.2のように蚘述する必芁がありたす。



䟋倖メむンクラスに関連付けられた「宣蚀」および「実装」のマクロ定矩は、任意に呌び出すこずができたす。

䟋#define ZZ_LIB_MACRO

0



r-nam-und開始しない

アンダヌスコア付きの名前。

呜名芏則では、アンダヌスコアで始たるタむプたたは倉数名は陀倖されたす。 識別子での2぀のアンダヌスコアの䜿甚は、コンパむラによる内郚䜿甚のためにANSI-C暙準に埓っお予玄されおいたす。

単䞀のアンダヌスコアで始たる名前は、暙準ラむブラリ関数でよく䜿甚されたす䟋「_main」および「_exit」。





r-nam-twound2぀のアンダヌスコアを連続しお䜿甚しないでください。





付録Bは、すべおの呜名芏則の䞀般的な衚を提䟛したす。



3. 2぀のスタむルの掚奚事項







s-nam-abbrev略語の䜿甚頻床を枛らしたす。

略語が広く知られおいる堎合にのみ䌚瀟内たたは䞖界で単語を省略したす。

たずえば、「DDX」は、Delcamで理解される略語です。 ルヌプ倉数「i」は「暙準」プログラマのショヌトカットであり、「array_index」よりもはるかに優れおいたす。 読みにくい名前は悪いず芋なされたす。



s-nam-length名前の長さを無理にしないでください。



䞀郚の環境では、認識される文字の数に制限があるため、名前を長くしすぎないでください。 たずえば、unix 'ar'コマンドは、15文字より長いファむル名を切り捚おたす。



s-nam-desc単玔でわかりやすい名前を䜿甚したす。

倉数の名前は、その䜿甚に぀いお説明する必芁がありたす。 倉数名に1぀、2぀の単語が含たれおいる堎合が最適です。 3の堎合、これはすでに泚意を匕き、4の堎合、名前は読みにくい堎合がありたす。 2単語の名前を䜜成するずきは、最も重芁な単語を最初に眮きたす。



s-nam-dif名前は倧幅に異なる必芁がありたす。

1、2文字だけ異なる倉数名を䜿甚しないでください。 文字の堎合にのみ異なるタむプ名を䜿甚しないでください。 同時に、同様の機胜を実行する倉数には同様の名前を䜿甚したす。





s-nam-std暙準ラむブラリで䜿甚される名前の䜿甚を避けたす。

マクロ定矩はルヌルによっお制限されないため、これはロヌカルオブゞェクトにも掚奚されたす暙準ラむブラリ内のオブゞェクトにプレフィックスがある堎合、問題は軜枛されたす。 暙準ラむブラリでは非垞に䞀般的なしたがっお広く䜿甚されおいる単語たずえば、「むンデックス」が䜿甚されるこずがあるため、これはルヌルではなく掚奚事項です。





3.4ファむル名





ファむルには4぀のタむプがありたす。



  1. ヘッダヌファむルには型定矩、関数プロトタむプなどが含たれたす。゜ヌスファむルにはクラス実装などが含たれたす。むンラむンファむルにはむンラむン関数が含たれたす。
  2. アりトラむンファむルにより、むンラむン関数の非むンラむンバヌゞョンがデバッグ目的で䜿甚できるようになりたす。






ファむルの呜名芏則を以䞋に瀺したす。





r-nam-clfileクラス実装を含むファむルには、クラスず同じ名前が必芁です。

ファむル名は、クラス名ず同じ倧文字ず小文字で蚘述する必芁がありたす。 これは、メむンクラスにも適甚されたす。 このルヌルは、ヘッダヌ、むンラむン、および゜ヌスファむルに適甚されたす。





r-nam-utfile䞀連のナヌティリティを実装するファむルには、ラむブラリプレフィックスが前に付いた小文字の名前が必芁です。

プレフィックスは、アンダヌスコア1぀で名前ず区切る必芁がありたす。 このルヌルは、ヘッダヌ、むンラむン、および゜ヌスファむルに適甚されたす。



r-nam-enum列挙型を1぀だけ含むヘッダヌファむルには、列挙型ず同じ名前を付けるこずができたす。



r-nam-extファむル拡匵子ヘッダヌ.h、゜ヌステキスト/アりトラむン.c、むンラむン.i。



Ellemtelは、CコンパむラずC ++コンパむラの䞡方で受け入れ可胜なファむルに察しお、「。hh」、「。cc」、「。icc」を予玄し、「。h」ず「.c」を予玄したす。 すべおのDelcamコヌドは、ルヌルに埓っおC ++をコンパむルする必芁があるため、このような区別は行いたせん。



r-nam-outlineアりトラむンファむルには、察応するヘッダヌず同じ名前が付けられ、「ファむル拡匵子」の前に「I」が远加されたす。



r-nam-split゜ヌステキストファむルが倧きくなり、分割する必芁がある堎合、新しい各ファむルの名前は、叀いファむルの名前にアンダヌスコアず小文字の単語が続いたものになりたす。

たずえば、zzClass.cファむルに、別のファむルに実装されおいるメンバヌ関数zzClass :: memberが含たれおいる堎合、そのファむルはzzClass_member.cず呌ばれる堎合がありたす。





䟋zzClass.czzClassクラスを実装する゜ヌスファむル。 zz_utils.hナヌティリティヘッダヌファむル。 zz_utils.izz_utils.hで定矩されおいるむンラむン関数の実装。

zzClassI.czzClass.hで定矩されおいるむンラむン関数のアりトラむンバヌゞョン。
















4 コヌド圢匏ずテキスト圢匏



このセクションでは、コヌドの倖芳を定矩したす。

4. 1䞀般的なコヌド圢匏







r-fmt-brace有効なブラケットスタむルのみを䜿甚したす。

ブラケットは、KRの「短い」圢匏に埓っお配眮する必芁がありたす。開始ブラケットは、前のコヌドの盎埌の行末にありたす。 閉じかっこは、開きかっこが配眮されおいる行の最初の非空癜文字に察応する列の別の行にありたす。 2぀の角括匧の間のコヌドはむンデントされおいたす。

䟋





iffunction_returns_true{

execute_this_code;

}







䟋倖関数の開始ブラケット{は別の行になければなりたせん。

䟋倖関数の匕数は別の行を占める堎合がありたす。



r-fmt-lines文字列は79文字を超えおはなりたせん。

この制限は、私たちが䜿甚しおいる暙準の「emacs」蚭定が長い行が折りたたたれおいるりィンドりを䜜成するずいう事実のために遞択されたした。 さらに、80x2480x25は叀い端末からの䞀般的なりィンドりサむズであり、最小化された行は読みにくくなりたす。



r-fmt-indentむンデントは2぀のスペヌスです。



ロゞックの新しいレベルごずに1レベル戻りたす。

䟋倖芁玠が敎列しおいる堎合、if-elseシヌケンスは読みやすくなりたす-r-if-elseifを参照しおください。



r-fmt-tabsタブ文字を䜿甚しないでください。

コヌドのサポヌト䞭にむンデントを維持するのが難しくなりたす。 他の゚キゟチックなキャラクタヌの䜿甚は避けおください。



s-fmt-sep䞍芁なセパレヌタを䜿甚しないでください。



䟋列挙の最埌の倀の埌に䜙分なコンマを䜿甚しないでください「strict」コンパむラヌは、IBMなどの゚ラヌをスロヌしたす。





4. 2オペレヌタヌ







s-fmt-long非垞に長いステヌトメントの䜿甚を避けたす。

代わりに、いく぀かの短いステヌトメントを䜿甚しおください。



s-fmt-stat各ステヌトメントを別々の行に配眮したす。

これを行わない堎合、プログラムの明瞭さが改善されるこずを確認する必芁がありたす。



s-fmt-col同じ行に耇数のステヌトメントがある堎合は、ステヌトメントを列にグルヌプ化したす。





s-fmt-split改行するずきは、もう1レベル戻りたす。

1行を耇数の行に分割する必芁がある堎合は、最初の行を陀くすべおの行を1レベル远加したす。 䟋倖s-fmt-splitexprを参照しおください。

䟋倖管理構造は、察応するセクション§6で説明されおいるように分割されたす。





4. 3぀の匏







s-fmt-splitexpr匏を分割するずき、同じ論理レベルの郚分匏は垂盎に敎列する必芁がありたす。

ネストレベルが高い堎所で匏を壊さないでください。 算術挔算子ず論理挔算子は、次の行の先頭ではなく、行の末尟に配眮しおください。 これにより、長い匏のロゞックを簡単にトレヌスできたす。

䟋





結果=x1 + 1*x1 + 1-

y1 + 1*y1 + 1;





䟋割り圓お匏は次のように分解できたす。







結果= a_long *斜蟺+

2.0 * cosアルファ;





壊れた匏を敎列させる堎合、サブ匏のいずれかたたは䞡方を括匧で囲む必芁がありたす。

䟋





ifa && b||

c{//これをしない



次のように曞く方が良いです。







ifa && b||

©{//はるかに良い







s-fmt-prec操䜜を明確にするために、より頻繁に括匧を䜿甚したす。

芚えおいない限り、テヌブルの優先順䜍を探しないでください。代わりに括匧を䜿甚しおください。 操䜜の優先順䜍を思い出せない堎合、コヌドを読み取った人もそれを芚えおいない可胜性が高くなりたす。 原則ずしお、操䜜+、/ず+、-の間の優先順䜍。 他のすべおの堎合には括匧を䜿甚したす。





4. 4぀のスペヌス





これらのガむドラむンは、むンデントに䜿甚されるスペヌスではなく、行内のスペヌスに適甚されたす。



  1. 耇数のスペヌスを䜿甚しないでください。

    たずえば、 'class <class>'で怜玢するず、クラス<clas s>の定矩が芋぀かりたす 。
  2. ポむンタヌ倉数ず「[」の間にスペヌスを䜿甚しないでくださいたずえば、「array [」で怜玢するず、配列の芁玠ぞの参照が芋぀かるはずです。 関数名ず ''の間にスペヌスを䜿甚しないでくださいたずえば、 'func'で怜玢するず、すべおの関数呌び出しが芋぀かりたす。垞に ''ず制埡ステヌトメントの間にスペヌスを入力したすたずえば、 'whilex'を䜿甚し、 「whilex」ではありたせん垞に「{」ず「}」の前にスペヌスを入力したす行の先頭にある堎合を陀く。
  3. 垞に「{」ず「}」の埌にスペヌスを入力したす行末にある堎合を陀く。
  4. 文字 '、;]'の前にスペヌスを入れ ないでください 。
  5. ''たたは ']'の埌にスペヌスを入力しないでください。定矩ず匏のコンマの埌にスペヌスを配眮するこずをお勧めしたすが、関数呌び出しの匕数の間にスペヌスを配眮するこずは掚奚されたせん。単項挔算ずオペランドの間にスペヌスを入力したす。「::」、「。」、「->」の前埌にスペヌスを䜿甚しないでくださいキヌワヌド「挔算子」の埌にスペヌスを入力しないでください。
  6. 䞊蚘の掚奚事項を陀き、挔算子の前埌のスペヌスはオプションです。






s-fmt-spaceスペヌスの䜿甚に関するガむドラむンに埓っおください。
















5 コメント





このセクションでは、コメントの曞き方に぀いお説明したす。 このドキュメントの別の郚分では、コメントを曞く堎所に぀いお説明したす。



All Articles