ニューヨーク・タイムズが、iOSチームで使われているObjective-Cのコーディング規約を公開した。このガイドには、ソースコードのレイアウト、条件式の書き方、変数名、メソッド、booleanの使い方などに対する提案が含まれている。
ニューヨーク・タイムズは、厳格なライティングスタイルで知られている。そのライティングスタイルは、何十年も前に公開された、印刷されたマニュアルに詳しく書かれていて、多くのジャーナリストが参照している。 今、この新聞社で働くiOSチームが、Objective-Cでプログラミングする開発者のためのコーディングガイドの仕事に取り掛かっている。このガイドは、Appleが書いたいくつかのObjective-CとCocoaのガイドに影響を受けたものだ。
コーディング規約は、通常、インデント、空白、括弧の使い方などのレイアウトや、大文字の使用、コメントのスタイルのようなソースコードの様々な側面に及ぶ。開発者はそれぞれ自分のコーディングスタイルを持つが、多くの場合、新しいチームに参加する度に、ある規約に従うように求められる。厳密なコーディングガイドラインに従うことは、それを不服に思う開発者もいるが、一般的には、ソースコードの可読性とメンテナンスのしやすさを改善するために推奨されている。Sunの「Javaプログラミング言語のコーディング規約 : なぜコーディング規約があるのか」は、コーディング規約を支持している。
ソフトウェアの生涯コストの40%-80%はメンテナンスだ。 作者が最後までソフトウェアをメンテナンスすることはほとんどない。 コード規約によってソフトウェアの可読性が向上し、エンジニアは新しいコードをより速く詳細まで理解できる。 ソースコードを製品として出荷する場合、他の製品と同様、適切にパッケージ化された、読みやすいものにしなければならない。
ニューヨーク・タイムズの規約を以下に示す。
スペーシング - タブを使わずに、スペースを4つ使う。メソッドや他の括弧は同じ行で始め、閉じるときは改行する。
良い例
if (user.isHappy) { //Do something } else { //Do something else }
悪い例
if (user.isHappy) { //Do something } else { //Do something else }
条件文はエラーを避けるため、常に括弧を使う。
良い例
if (!error) { return success; }
悪い例
if (!error) return success;
if (!error) return success;
変数名は、できるだけ説明的にする。可能な場所では、そのままインスタンス変数を使うのではなくプロパティ定義を使うべきだ。
良い例
@interface NYTSection: NSObject @property (nonatomic) NSString *headline; @end
悪い例
@interface NYTSection : NSObject { NSString *headline; }
Booleans - 比較で nil/NO
、または、YES
を使うべきではない。
良い例
if (!someObject) { }
if (isAwesome) if (![someObject boolValue])
悪い例
if (someObject == nil) { }
if ([someObject boolValue] == NO) if (isAwesome == YES) // Never do this.
ニューヨーク・タイムズのObjective-Cコーディングスタイルガイドは、メソッド、ネーミング、リテラル、コメント、定数、シングルトンなど他の要素の規約を含み、開発者からのフィードバックを求めている。また、このガイドが気に入らなければ、Google、GitHub、Adium、Sam Soffes、CocoaDevCentral、Luke Redpath、Marcus Zarraで使われる他のガイドラインに従うように提案している。