高品質iOSとOS Xコードを記述する52の有効な方法(一)
1877 ワード
この本はOC言語の基礎知識がなくて、どのようにこの言語を効率的に運用するかを話しています.
第一章OCに詳しい
1、OCとは
・OCはC言語にオブジェクト指向特性を付加したものであり,Cのスーパーセットである.OCは、動的にバインドされたメッセージ構造、すなわち、実行時にオブジェクトタイプがチェックされる.メッセージを受信した後、どのコードが実行されるかは、コンパイラではなくランタイム環境によって決まります.
2、クラスのヘッダファイルにできるだけ他のヘッダファイルを導入しない
・必要がない限り、ヘッダファイルを導入しない.一般に、あるクラスのヘッダファイルで前宣言を使用して他のクラスに言及し、実装ファイルにどのクラスのヘッダファイルを導入するかは、クラスとクラスの結合を最小限に抑えることができます.
3、字面量文法を多用し、それと等価な方法を少なく使う
字面量構文を使用すると、ソースコードの長さを短縮し、コードをより読みやすくすることができます.
字面量を使うことでコードをよりきれいにすることができ、余分な文法成分がありません.
字面量配列字面量構文を使用せずに配列を作成する方法を見てみましょう.
字面量構文を使用して作成された配列
単純なだけでなく、配列の操作にも便利です.
4、多用定数タイプ、#define前処理命令を少なくする
前処理命令で定数を定義しないでください.このように定義された定数にはタイプ情報が含まれておらず、コンパイラはコンパイル前に検索と置換操作を実行するだけです.定数値を再定義した場合でも、コンパイラは警告情報を生成しません.これにより、アプリケーションの定数値が一致しません.インプリメンテーションファイルでstatic constを使用して、コンパイルユニット内でのみ表示される定数を定義します.この定数はグローバルシンボルテーブルにないため、名前に接頭辞を付ける必要はありません.ヘッダファイルでexternを使用してグローバル定数を宣言し、関連するインプリメンテーションファイルで値を定義します.この定数はグローバルシンボルテーブルに表示されるため、名前は区切られ、通常はそれに関連するクラス名で接頭辞として使用されます.
5、列挙でステータス、オプション、ステータスコードを表す
ステータスマシンの状態、メソッドに渡されるオプション遺跡のステータスコードなどを列挙して、これらの値に分かりやすい名前を付けるべきです.メソッドに渡されるオプションを列挙型として表し、複数のオプションを同時に使用できる場合は、各オプション値を2のべき乗として定義し、ビット単位または操作で組み合わせることができます.NSでENUMとNS_OPTIONSマクロは、列挙タイプを定義し、その下位データ型を示す.これにより、コンパイラが選択したタイプではなく、開発者が選択した最下位のデータ型で列挙が実現されることを保証できます.列挙タイプを処理するswitch文でdefaultブランチを実装しないでください.これにより、新しい列挙が追加されると、コンパイラは開発者にswitch文がすべての列挙を処理していないことを提示します.
第一章OCに詳しい
1、OCとは
・OCはC言語にオブジェクト指向特性を付加したものであり,Cのスーパーセットである.OCは、動的にバインドされたメッセージ構造、すなわち、実行時にオブジェクトタイプがチェックされる.メッセージを受信した後、どのコードが実行されるかは、コンパイラではなくランタイム環境によって決まります.
2、クラスのヘッダファイルにできるだけ他のヘッダファイルを導入しない
・必要がない限り、ヘッダファイルを導入しない.一般に、あるクラスのヘッダファイルで前宣言を使用して他のクラスに言及し、実装ファイルにどのクラスのヘッダファイルを導入するかは、クラスとクラスの結合を最小限に抑えることができます.
3、字面量文法を多用し、それと等価な方法を少なく使う
字面量構文を使用すると、ソースコードの長さを短縮し、コードをより読みやすくすることができます.
NSNumber *someNumber = [NSNumber numberWithInt:1];
字面量を使うことでコードをよりきれいにすることができ、余分な文法成分がありません.
NSNumber *someNumber = @1;
字面量配列字面量構文を使用せずに配列を作成する方法を見てみましょう.
NSArray *array = [NSArray arrayWithObjects:@"object1", @"object2", @"object3", @"object4", nil];
字面量構文を使用して作成された配列
NSArray *array = @[@"object1", @"object2" , @"object3", @"object4"];
単純なだけでなく、配列の操作にも便利です.
:
[array objectAtIndex:1]
:
array[1];
4、多用定数タイプ、#define前処理命令を少なくする
前処理命令で定数を定義しないでください.このように定義された定数にはタイプ情報が含まれておらず、コンパイラはコンパイル前に検索と置換操作を実行するだけです.定数値を再定義した場合でも、コンパイラは警告情報を生成しません.これにより、アプリケーションの定数値が一致しません.インプリメンテーションファイルでstatic constを使用して、コンパイルユニット内でのみ表示される定数を定義します.この定数はグローバルシンボルテーブルにないため、名前に接頭辞を付ける必要はありません.ヘッダファイルでexternを使用してグローバル定数を宣言し、関連するインプリメンテーションファイルで値を定義します.この定数はグローバルシンボルテーブルに表示されるため、名前は区切られ、通常はそれに関連するクラス名で接頭辞として使用されます.
5、列挙でステータス、オプション、ステータスコードを表す
ステータスマシンの状態、メソッドに渡されるオプション遺跡のステータスコードなどを列挙して、これらの値に分かりやすい名前を付けるべきです.メソッドに渡されるオプションを列挙型として表し、複数のオプションを同時に使用できる場合は、各オプション値を2のべき乗として定義し、ビット単位または操作で組み合わせることができます.NSでENUMとNS_OPTIONSマクロは、列挙タイプを定義し、その下位データ型を示す.これにより、コンパイラが選択したタイプではなく、開発者が選択した最下位のデータ型で列挙が実現されることを保証できます.列挙タイプを処理するswitch文でdefaultブランチを実装しないでください.これにより、新しい列挙が追加されると、コンパイラは開発者にswitch文がすべての列挙を処理していないことを提示します.