構造
理由は、構造を使用する方法:
- データ関係に明確な構造を持ちます。
- データブロックの構造の操作を簡素化;
- パラメータのリストのための構造を簡単にするために、
- メンテナンスを軽減する構造を持ちます。
ポインタ
ポインタを使用して一般的なスキル
ポインタの適切な使用は、双方向の戦略を使用するために、プログラマが必要です。何よりもまず、エラーポインタを回避するために、第二に、コードが書き込まれ、ポインタエラーができるだけ早く検出されます。
- ポインタ操作制限サブルーチンまたはクラス内の、
- ポインタの宣言と定義。一方、
- 同じスコープを割り当てられたポインタのポインタを削除します。
- ポインタを使用する前に、ポインタを削除します。
- チェックそれを使用するポインタ変数が参照します。
- 犬のタグフィールドとメモリの破損を検出します。
- 冗長性が大幅に増加。
- コードの明瞭さを改善するために追加のポインタ変数を持ちます。
- 複雑なポインタ式を簡素化。
- マップを描画します。
- 正しい順序でリストポインタを削除します。
- 予備割り当てられたメモリ領域を確保します。
- 砕石ガベージデータ。
- あなたがそれらを削除するか、ポインタを解放した後にnullに設定されています。
- 変数を削除する前に、無効なポインタをチェックしてください。
- 指の割り当てを追跡。
- カバールーチンを書く、戦略を解決ポインタを避ける達成することに焦点を当てます。
- 非ポインタを使用して技術。
Cのポインタ
C言語のポインタのヒント:
- 明示的なポインタ型の代わりに、デフォルトのタイプを使用します。
- キャストは避けてください。
- パラメータとして渡されたアスタリスクのルールに従ってください。
- メモリ割当て使用はsizeof()変数の大きさを決定します。
グローバルデータ
グローバルデータは、プログラム中の任意の時点でアクセスすることができます。便利なルーチンの数を介してローカルデータ、アクセスデータを使用するよりも危険なグローバルデータを使用します。
グローバルデータに関連するよくある質問
- 誤ってグローバルデータを変更します。
- グローバルデータに関連したエキゾチックでエキサイティングな問題。
- 再進入の問題に関連したグローバルデータコード。
- グローバルデータは、コードの再利用を妨げます。
- 初期化シーケンスは、非決定論のグローバルデータに関する事項。
- グローバルデータは、モジュール性と知性の管理性を損なわ。
グローバルデータを使用する理由
- グローバルデータを保存します。
- アナログは、定数の名前。
- アナログタイプを列挙しました。
- 共通データの利用のしやすさ。
- 浮遊データを排除します。
グローバルデータの最後の手段としてのみ使用
- 最初のローカル変数のそれぞれは、必要なときにだけグローバル変数を設定するために設定されています。
- グローバル変数とクラス変数を区別する。
- 質問サブルーチンを使用することを置きます。
グローバルデータへのアクセス・ルーチンで置換
アクセス・ルーチンを使用して情報隠蔽と抽象データ型の実装の中核方法です。
- アクセスルーチンの利点を使用します。
- あなたは、データの集中管理を取得します。
- あなたは、変数へのすべての参照が保護されていることを確認することができます。
- あなたは自動的にユニバーサル情報隠蔽の利益を得ることができます。
- アクセス・ルーチンを簡単に抽象データ型に変換することができます。
- アクセス・ルーチンを使用する方法。
- データアクセスルーチンにアクセスするために必要なすべてのコード。
- 一つにスローされるすべてのグローバルデータを入れないでください。
- グローバル変数へのアクセスを制御するためにロックすることにより、
- あなたのアクセス・ルーチン内で抽象化レイヤを構築します。
- データの項目へのすべてのアクセスを抽象化の同じレベルで行われますように。
グローバルデータを使用してのリスクを軽減する方法
- 命名規則の作成は、グローバル変数を強調表示します。
- 全体のグローバル変数のために良いの注釈付きリストを作成します。
- 中間結果を格納するグローバル変数を使用しないでください。
その他のリソース
マグワイアは "ソリッドコードの記述します」
マイヤーズ「Effictive C ++」
チェックリスト:珍しいデータ型の使用を注意してください
構造
- []あなたは、関連するデータの編成及び操作に構造の代わりに、単純な変数を使用できますか?
- []あなたはそれを置き換えるために、クラス構造を作成することを検討しますか?
グローバルデータ
- []すべての変数は、ローカルまたはクラス全体であるかどうか?絶対に必要な場合を除き、グローバルのですか?
- []命名変数は、ローカルデータ、クラスデータとグローバルデータは、それを区別することができますか?
- []あなたはすべてのグローバル変数のために文書化されなければならないのですか?
- [] 4つのパスすなわち、擬似グローバルデータを使用しないでください、巨大な厄介なデータオブジェクトがそれを持っている含まれていますか?
- []グローバルデータアクセスルーチンとそれを交換するには?
- クラスに[]組織アクセスルーチンとデータそれ?
- []アクセスルーチンがそれに実装され、基礎となるデータ・タイプ上の抽象化の層を提供しますか?
- 抽象それの同じ層で[]関連するすべてのアクセス・ルーチン?
ポインタ
- []サブルーチンに分離ポインタ操作はありますか?
- []ポインタ参照の法的?またはポインタはダングリングポインタがそうなる可能性が?
- あなたは、ポインタを使用する前に、[]コードは、その有効性をチェック!
- []これは、変数、ポインタが指している使用する前に有効性をチェックされますか?
- []それは切れnullにポインタの後?
- []読みやすさの観点では、コードは変数がそれを使用するために必要なすべてのポインタを使用しましたか?
- []リンクリストのポインタが正しい順序それにリリースされるのですか?
- []プログラムは、それがメモリ不足時に正常に終了することができるようにするためにリザーブ領域を保持するためにメモリを割り当てますか?
- []ポインタの最終使用の前に利用できていない他の方法ではそうではないですか?
点数
- プログラムの構造は単純で理解しやすく、かつ保守が容易なものとすることができます。
- あなたは、時間構造を使用しようとしているときはいつでも、それは考慮されていないクラスは、より良い仕事します。
- ポインタエラーが発生しやすくなります。アクセスルーチンまたはクラスと独自のコードを保護するための防御的プログラミング手法では、
- あなたはまだそれらを置き換えるために、他のより良い方法を使用することができますので、彼らは、非常に危険であるという理由だけでグローバル変数を使用しないでください、ではありません。
- あなたはグローバル変数を使用する必要がある場合は、アクセス・ルーチンでそれを使用します。アクセスルーチンはすべてを少し持って来ることができ、あなたをもたらすことができる、グローバル変数のいくつかの追加の利点があります。