亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iPhone開發重構:提取公用的方法以清理重復代碼

發布時間:2020-04-23 13:50:25 來源:網絡 閱讀:1216 作者:benjielin 欄目:開發技術

     無論在iPhone開發還是學習的過程中都會看到一些不是很理想的代碼,不可否認自己也在不斷“貢獻”著這類代碼。面對一些代碼的“壞味道”,重構顯然是個有效的解決途徑。《iPhone開發重構》系列就想總結和補充iPhone開發中經歷的一些重構,其間可能會引用一些開源以及實際項目的代碼,本著對技術的探求,冒昧之處還請作者多多見諒。

 

   代碼重復是一個比較明顯的“壞味道”,提取公用的方法就是解決的途徑之一。iPhone開發中,使用UITableView的時候就有如下一段“經典”的模板代碼,因為這是項目模板自動生成的,所以很多人就自然接受了。但隨著越來越多地通過copy&paste在一個項目中使用這段代碼,大家是否有些采取行動的壓力呢?好吧,我們就從這“動刀”吧!

 

重構前:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"wikiHowCell";
    UITableViewCell *cell = (WHTableViewCell *)[tv dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[WHTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.title = [[featuredArticles objectAtIndex:indexPath.row] objectForKey:@"title"];
    return cell;
}

 

   對此我們可以提取個公共的方法,并放置在一個適當的地方。UITableViewCell的Category應該是一個比較好的去處。重構后提取的方法以及實際調用的代碼如下:

重構后:

@implementation UITableViewCell(Cache)

+ (id)dequeOrCreateInTable:(UITableView*)tableView withId: (NSString*)reuseId andStyle:(UITableViewCellStyle)style {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseId];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:style reuseIdentifier:reuseId] autorelease];
    }
    return cell;
}

@end

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [UITableViewCell dequeOrCreateInTable:tableView withId:@"wikiHowCell" andStyle:UITableViewCellStyleDefault];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.title = [[featuredArticles objectAtIndex:indexPath.row] objectForKey:@"title"];
    return cell;
}

   從代碼量衡量,僅從此處可能感覺重構前后變化不大,甚至還會略有增多。但如果考慮到公用方法的多次使用產生的“效益”,付出的努力應該是值當的!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平阳县| 玛纳斯县| 内乡县| 石景山区| 界首市| 博客| 铅山县| 荣昌县| 道孚县| 湖州市| 叶城县| 葫芦岛市| 天峻县| 奉贤区| 富民县| 大城县| 泸西县| 克东县| 缙云县| 饶平县| 石渠县| 比如县| 合川市| 象州县| 龙岩市| 河南省| 延寿县| 林芝县| 阿克陶县| 读书| 仙游县| 长子县| 武隆县| 东辽县| 璧山县| 岢岚县| 五指山市| 白朗县| 克山县| 巨野县| 大港区|