91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

阜城县| 广德县| 宁武县| 天气| 正蓝旗| 安多县| 志丹县| 华池县| 耿马| 全椒县| 平利县| 嘉义市| 鹤岗市| 洛南县| 西青区| 贞丰县| 冀州市| 唐河县| 徐州市| 平乐县| 玉门市| 苏尼特左旗| 友谊县| 桐庐县| 阿鲁科尔沁旗| 平原县| 霍山县| 深州市| 河曲县| 岳普湖县| 分宜县| 通州区| 化州市| 临湘市| 西乌珠穆沁旗| 海宁市| 双江| 丹江口市| 盐城市| 瑞丽市| 孝义市|