使用私有方法使代码尽可能模块化

时间:2013-02-12 18:06:54

标签: ios objective-c uitableview ios6

在我的-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中,我使用此代码返回单元格标签的youtube视频日期:

   //Video upload date
   NSString *formattedString = [[[self.videos objectAtIndex:indexPath.row] objectForKey:@"uploaded"] stringByReplacingOccurrencesOfString:@"T" withString:@""];

   formattedString = [formattedString stringByReplacingCharactersInRange:NSMakeRange(18, 5) withString:@""];

   NSDateFormatter *df = [[NSDateFormatter alloc] init];

   [df setDateFormat:@"yyyy-MM-ddHH:mm:ss"];

   NSDate *date = [df dateFromString:formattedString];

   [df setDateFormat:@"dd/MM/yyyy"];

   NSString *dateStr = [df stringFromDate:date];

   cell.date.text = dateStr;

我的方法实现看起来有些混乱,我想知道什么是正确的方法。我应该将此代码保留在原来的位置,还是应该为日期格式设置另一个私有方法?

假设我想制作私人方法。类似的东西:

   -(NSString *)formatDateWithString:(NSString *) mystring {

      NSString *formattedString = [mystring stringByReplacingOccurrencesOfString:@"T" withString:@""];

      formattedString = [formattedString stringByReplacingCharactersInRange:NSMakeRange(18, 5) withString:@""];

      NSDateFormatter *df = [[NSDateFormatter alloc] init];

      [df setDateFormat:@"yyyy-MM-ddHH:mm:ss"];

      NSDate *date = [df dateFromString:formattedString];

      [df setDateFormat:@"dd/MM/yyyy"];

      NSString *dateStr = [df stringFromDate:date];

      return dateStr; 
      }

我应该用-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法写什么?

我对私有方法的论证是[self.videos objectAtIndex:indexPath.row]但是我失去了如何调用此方法以及在哪个实例变量上?

我需要在我的视图类中创建一个NSString实例变量,或者我可以在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中启动NSString实例并在其上执行我的私有方法吗?

2 个答案:

答案 0 :(得分:2)

一般的经验法则是,如果您打算重用逻辑,那么将其放入可重用的对象中。这个想法是为了防止重复。在您的情况下,如何创建DateUtils类并将逻辑放在那里。创建一个类别将是另一种选择。

示例用法:

NSString *youtubeVideoDateStr = [DateUtils formatDateWithString:@"..."];

答案 1 :(得分:1)

这个问题没有真正的“正确”答案。 “看起来凌乱”不是一个可量化的问题,因此无法衡量任何变化的正确性。

如果您可以说代码更容易维护,那么也许您可以证明时间可以重新考虑它。是否会花更多的时间来学习它的功能而不是简化它?