Xcode的Refactor使用

圖片來之網絡.png
最近在看《重構》的書,想到Xcode有一個Refactor的功能,不知道您用的多很少,用這個功能在咱們開發過程當中,能夠提升開發效率。
Refactor
右鍵顯示
Refactor


1、Rename

重命名符號,修改屬性或方法的名字。 固然有可能您用的是全局Replace這個方法,可是這個沒法替換Class的文件名。 演示下將TestViewController的.h .m .xib及用到的地方修改成有意義的命HomeViewController。bash

1.在TestViewController上右鍵點擊,選擇Refactor->Rename

Rename

2.將TestViewController修改成HomeViewController,點擊Preview。

Rename

3.點擊查看並確認,是不是重命名正確。點擊Save,再點擊Continue。Rename完成。

4.再去全局搜索TestViewController

Search
還有註釋中的未被修改,選擇Replace替換爲HomeViewController。

重命名Property操做也同上。因此看到不符合規範的變量名和方法名及類名,快速的修改吧,提升代碼的可讀性。網絡


2、 Extract

封裝代碼。 有時候在鍵盤上大步流星的敲寫代碼,發現一個方法中超過了200行的代碼,要進行方法的分割。如提取通用的代碼,方法其餘方法調用。用Extract很簡單。 操做以下:函數

1.選中須要提取的代碼,右鍵點擊,選中Extract

Extract
New method 是新方法,OC的方法。eg. - (void)extracted_method New function是新函數,C語言的函數。eg. void extracted_function()

2.修改方法,點擊Preview

Extract
點擊Save,再選擇Continue。

3.封裝完成

由原來的ui

- (void)layoutSubviews
{
    [super layoutSubviews];
    
    NSInteger count = [self.subviews count];
    for (int i = 0; i < count; i++) {
        UIButton *btn = self.subviews[i];
        
        btn.tag = i;
        
        CGFloat x = i * self.bounds.size.width / count;
        CGFloat y = 0;
        CGFloat width = self.bounds.size.width / count;
        CGFloat height = self.bounds.size.height;
        
        btn.frame = CGRectMake(x, y, width, height);
    }
}
複製代碼

修改成spa

- (void)updateButtonFrame
{
    NSInteger count = [self.subviews count];
    for (int i = 0; i < count; i++) {
        UIButton *btn = self.subviews[i];
        
        btn.tag = i;
        
        CGFloat x = i * self.bounds.size.width / count;
        CGFloat y = 0;
        CGFloat width = self.bounds.size.width / count;
        CGFloat height = self.bounds.size.height;
        
        btn.frame = CGRectMake(x, y, width, height);
    }
}

- (void)layoutSubviews
{
    [super layoutSubviews];
    
    [self updateButtonFrame];
}
複製代碼

減小不少複製黏貼。3d


3、 Create Superclass

建立超類。code

. 選中類名,點擊右鍵Refactor->Create Superclass

Create Superclass
Create files for new superclass: 建立新文件來建立新類 Add superclass to HomeViewController's files: 在HomeViewController中添加新類。

2. 輸入超類名稱,點擊Preview

Create Superclass

點擊Save,再點擊Continue。cdn

3. 修改Superclass的繼承類名

完成blog


4、 Move Up

將實例變量,property變量或方法移動到超類。 移動方法舉例 方法申明繼承

- (void)updateUserInfo;
複製代碼

方法實現

- (void)updateUserInfo
{
    NSLog(@"Hello World!");
}
複製代碼

1. 選中類名, 右鍵點擊Refactor->Move Up

Move Up

2. 點擊Preview

啥都沒有顯示,點擊Save

3. 方法已經到超類BaseViewController

#import <UIKit/UIKit.h>

@interface BaseViewController : UIViewController

- (void)updateUserInfo;

@end
複製代碼

5、 Move Down

將實例變量移動到子類。

@interface BaseViewController (){
    NSString *schoolNameStr;
}
複製代碼

1. 選中schoolNameStr,右鍵Refactor->Move Down

Move Down

2. 點擊Preview, 再點擊Save。

在子類HomeViewController中,能夠看到schoolNameStr變量。

@interface HomeViewController : BaseViewController {
    NSString *schoolNameStr;
}
複製代碼

6、 Encapsulate

建立Setter和Getter方法。 只能對實例變量進行操做,對property無效。

@interface HomeViewController ()
{
    NSString *nameStr;
}
複製代碼

1. 選中nameStr,點擊右鍵Refactor->Encapsulate

Encapsulate

2. 修改Getter和Setter的方法名後,點擊Preview

Encapsulate

3. 點擊Save

- (NSString *)nameStr {
    return nameStr;
}

- (void)setNameStr:(NSString *)newValue {
    nameStr = newValue;
}
複製代碼

Setter和Getter的方法生成完成。

// END

相關文章
相關標籤/搜索