BT
  • エクスクルーシブアップデート:

ニューヨーク・タイムズ Objective-Cスタイルガイド

作者: Abel Avram , 翻訳者 大田 緑 - (株)チェンジビジョン 投稿日 2013年8月15日 |

原文(投稿日:2013/08/06 )へのリンク

ニューヨーク・タイムズが、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コーディングスタイルガイドは、メソッド、ネーミング、リテラル、コメント、定数、シングルトンなど他の要素の規約を含み、開発者からのフィードバックを求めている。また、このガイドが気に入らなければ、GoogleGitHubAdiumSam SoffesCocoaDevCentralLuke RedpathMarcus Zarraで使われる他のガイドラインに従うように提案している。

    こんにちは

    コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

    アカウント登録をしてInfoQをお楽しみください。

    あなたの意見をお聞かせください。

    HTML: a,b,br,blockquote,i,li,pre,u,ul,p

    このスレッドのメッセージについてEmailでリプライする
    コミュニティコメント

    HTML: a,b,br,blockquote,i,li,pre,u,ul,p

    このスレッドのメッセージについてEmailでリプライする

    HTML: a,b,br,blockquote,i,li,pre,u,ul,p

    このスレッドのメッセージについてEmailでリプライする

    ディスカッション

    特集コンテンツ一覧

    BackboneとAngularを比較する

    Victor Savkin 2013年12月23日 午後8時23分

    Java 8を可能にしたJava 7の機能

    Ben Evans 2013年11月12日 午後8時25分

    サイト全般について
    バグ
    広告
    記事
    InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
    プライバシー
    BT