27869


`//MARK: -` としてナビゲーターのリストに表示されるメソッド名を  
プログラム全体の見通しがよくなったり、可読性が増したり、  
開発効率が上がるような分類方法を知りたいのですが、  
一般的に知られた方法や、優れた方法はあるのでしょうか？

・大分類＞中分類＞小分類

みたいな分類方法はないですか？

・あるいは、そのあたりの指針を示した資料などありますか？

・今のところなんとなく、下のように関係のあるものをまとめているだけです。

[code]

     //MARK: - フェッチ
     //MARK: - Common
     //MARK: - ScrollView
     //MARK: - CollectionView
     //MARK: - TableView
     //MARK: - 新しいアイテムをつくる
     //MARK: - Item 操作
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/ozUXN.png)](https://i.stack.imgur.com/ozUXN.png)


CC BY-SA 3.0
2016-06-26T08:08:16.037
27088
2016-07-26T19:20:59.850
12297
question
swift xcode swift2 swift3
Xcodeを使っていますが、良いメソッドの分類方法を知りたいです。


良いかどうかはわかりませんが、私は普段以下のように分類しています

[code]

    //MARK: - フィールド
    ...略
    
    //MARK: - イニシャライザ
    ...略
    
    //MARK: - メソッド
    ...略
    
    //MARK: configure
    ...略
    
    //MARK: handler
    
[/code]

ざっとですが、このような感じです。

MARKのあとに`-`をつけるかつけないかで、プレビューも変わってきます。  
これで大見出しと小見出しは分けることができると思います。

そしてあまり細かく分類はしません。  
質問者様のようにたくさんのメソッドができる場合においては、  
私はクラスを分けることで解決しています。


CC BY-SA 3.0
2016-06-26T20:22:28.783
27097
2016-06-26T20:22:28.783
13404
27088
answer


僕の場合は、Objective-Cなので、`//MARK:-` を使わずに、`#pragma mark`でコードの区分けをしていますが、  
こんな感じですね。基本はクラスの中でどんな役割を持っているか？を`MARK:-`で、そのなかでのまとまりを`MARK:`で区切って見出しを付けていくと良いと思っています

[code]

    #pragma mark - synthesize properties
    #pragma mark - class method
    #pragma mark - constructor / destructor
    #pragma mark - override
    #pragma mark - properties
    #pragma mark - actions
    #pragma mark - messages
    #pragma mark - private
    #pragma mark - delegate
    #pragma mark - C functions
    
[/code]

`//MARK:`同様、`-`を付けるか付けないかで区切り線が入るか入らないかが変わります。  
上から順に、`@property`の`@synthesize`宣言をするエリア、+で始まるメソッドを列挙するエリア、init(With...)で始まるコンストラクター、上位クラスをオーバーライドするメソッドの定義、@synthesyzeではフォローしきれない、副作用のあるプロパティのアクセッサー、IBActionで呼ばれるユーザーインターフェイスに反応するアクション、クラス外に公開するメソッド、クラス外に公開しないメソッド、TableViewやXMLPerserに呼ばれるデリゲートメソッドという風に分割しています。  
基本的な考えはkratosさんと一緒ですね。あとは出来るだけ最大公約数的に分類して、自分がメソッドを見つけやすく出来れば良いと思います。  
これを更にDashなどのスニペットツールに登録しておいて、クラスファイルを作成した時は無条件に貼り付けるようにしています。  
Dashはスニペットツールとしても、クラス・メソッドリファレンスとしても優れているので導入をお勧めします。


CC BY-SA 3.0
2016-07-26T19:07:27.377
27869
2016-07-26T19:20:59.850
2016-07-26T19:20:59.850
14745
14745
27088
answer