进阶篇第八期:任性的提高代码质量(二)

在任性的提高代码质量里面,上期小弟提到了关于代码质量最基本的问题:代码规范

那么在这一期里,小弟会写一下关于MVC的简单使用,那么废话不多说,一会儿直接上代码

Model类:

我们先创建几个属性来弄一下吧,这里如果有某种类型多种状态,请用枚举来弄

 
#import <Foundation/Foundation.h>

typedef enum : NSUInteger {
    SWHButtonTypeNone,
    SWHButtonTypeUp,
    SWHButtonTypeDown,
} SWHButtonType;

@interface SWHModel : NSObject

@property (nonatomic, assign) NSInteger num;
@property (nonatomic, assign) SWHButtonType buttonUpType;

@end

View类:本期只用常用的TableViewCell来做

我们在Cell里面加一个Button,然后在外面爆出对应的方法,最好是给Cell一个属性来获取对应的Model,这样我们用起来比较方便,但是我并不已建议重写model的setter方法来做UI的对应赋值

 
#import <UIKit/UIKit.h>

#import "SWHModel.h"

@class SWHTableViewCell;

typedef void(^ButtonBlock)(BOOL isChanged);

@protocol SWHTableViewCellDelegate <NSObject>

- (void)tableViewCell:(SWHTableViewCell *)cell didTappedButton:(UIButton *)button block:(ButtonBlock)block;

@end

@interface SWHTableViewCell : UITableViewCell

@property (nonatomic, assign) id<SWHTableViewCellDelegate> delegate;
@property (nonatomic, strong) SWHModel *model;

- (void)setInfoWithModel:(SWHModel *)model;

@end
 
#pragma mark - Action

- (BOOL)isButtonTypeChanged {
    if (SWHButtonTypeDown == [self.model buttonUpType]) {
        NSLog(@"您已经踩过");
        
        return YES;
    } else if (SWHButtonTypeUp == [self.model buttonUpType]) {
        NSLog(@"您已经顶过");
        
        return YES;
    }
    
    return NO;
}

- (void)upActionButton:(UIButton *)button {
    if ([self isButtonTypeChanged]) {
        return;
    }
    
    [button setBackgroundColor:[UIColor redColor]];
    [self.model setButtonUpType:SWHButtonTypeUp];
    [self.numLabel setText:[NSString stringWithFormat:@"%ld", ++self.model.num]];
    
    __weak SWHTableViewCell *weakSelf = self;
    if ([self.delegate respondsToSelector:@selector(tableViewCell:didTappedButton:block:)]) {
        [self.delegate tableViewCell:self didTappedButton:button block:^(BOOL isChanged) {
            if (!isChanged) {
                [button setBackgroundColor:[UIColor yellowColor]];
                [weakSelf.numLabel setText:[NSString stringWithFormat:@"%ld", --weakSelf.model.num]];
                [weakSelf.model setButtonUpType:SWHButtonTypeNone];
            }
        }];
    }
}

Controller类:

正常来讲,我们需要在Controller里面来做请求网络并且对返回的数据进行存储并且将其赋值给对应的Cell,请不要在Controller里面来改变Cell的UI,那么我在这里做的是模仿虚拟网络,没有写真正的网络请求,思路大同小异了

 
#pragma mark - SWHTableViewCellDelegate

- (void)tableViewCell:(SWHTableViewCell *)cell didTappedButton:(UIButton *)button block:(ButtonBlock)block {
    __weak ViewController *weakSelf = self;
    __block ButtonBlock newBlock = block;
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        newBlock([weakSelf delayRequest]);
    });
}

#pragma mark - Method

- (BOOL)delayRequest {
    NSInteger num = random() % 2;
    
    if (num) {
        NSLog(@"请求网络成功");
        
        return YES;
    }
    
    NSLog(@"请求网络失败");
    
    return NO;
}

好啦,本期就写在这里咯,如果有什么好的建议,或者问题的话,请来群里哦,一起分享、探讨咱们的iOS技术咯

时间: 2024-08-08 19:25:55

进阶篇第八期:任性的提高代码质量(二)的相关文章

(转)提高代码质量---one

1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣. 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao)了各自代码中这样或者那样的问题. 最近部门在组织bootcamp,正好我负责培训代码质量部分,在培训课程中让大家花了不少时间去讨论.改进.完善自己的代码.虽然刚毕业的同 学对于代码质量都很用心,但最终呈现出来的质量仍然没能达到“十分优秀”的程度. 究其原因,主要是不了解好的代码“应该”是什么样的.

提高代码质量:如何编写函数

阅读目录 命名 函数参数 编写函数体 总结 函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的.写好一个函数是提高程序代码质量最关键的一步.本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高.易维护,易测试的函数. 回到顶部 命名 首先从命名说起,命名是提高可读性的第一步.如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难.下面我来说说如何为函数命名的一些想法和感受: 采用统一的命名规则 在谈及如何为函数取一

如何提高代码质量

一.代码质量 软件是交付给用户,并由用户体验的产品:代码则是对软件正确且详细的描述,所以代码质量关系到软件产品的质量.虽然软件质量不等于代码质量,但是代码上的缺陷会严重的影响到软件产品的质量.因此,为提高代码质量的投入是值得的. 二.软件产品质量通常可以从以下六个方面去衡量 功能性,即软件是否满足了客户业务要求: 可用性,即衡量用户使用软件需要付出多大的努力: 可靠性,即软件是否能够一直处在一个稳定的状态上满足可用性: 高效性,即衡量软件正常运行需要耗费多少物理资源: 可维护性,即衡量对已经完成

Findbug在项目中的运用--提高代码质量

 FindBugs是一个静态分析工具,它检查类或者 JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题.有了静态分析工具,就可以在不实际运行程序的情况对软件进行分析 第一 手动安装 在Eclipse点击菜单中Help-->菜单 第二:输入地址: http://findbugs.cs.umd.edu/eclipse,出现版本列表: 按照一步步提示安装重启即可 =================================================== 2) (Re-)star

如何提高代码质量(转)

原文:如何提高代码质量 1.软件产品质量 软件产品质量通常可以从以下六个方面去衡量(定义) : l         功能性(Functionality),即软件是否满足了客户业务要求: l         可用性(Usability),即衡量用户使用软件需要付出多大的努力: l         可靠性(Reliability),即软件是否能够一直处在一个稳定的状态上满足可用性: l         高效性(Efficiency),即衡量软件正常运行需要耗费多少物理资源: l         可维

进阶篇第六期:我称它为“交互式开发思想”

最近一直在做项目,在项目中呢也遇到了某些问题,比如为一个状态点赞或者是踩,那么按钮的状态会随之改变,但是这个过程是要发送请求的,也就是说我们要在请求回来以后才改变状态,于是小弟就有了一个大胆的想法,那么我的这个想法呢,就是以交互为主,开发逻辑为辅,让交互设计融入开发代码之中,所以我称它为:交互式开发思想,希望可以帮助小伙伴哦 主要就是下面这两个图的效果,也就是点击的时候让它有反应,当请求过后还要再次回调进来,比如请求成功,我们就不用改变它的状态,但是请求失败,我们就要将原来的状态改变,而我们正常

初级篇第八期:学习写一个Model

学习建议:自己动手,丰衣足食 学习周期:1周 学习目的:熟练使用Obejct-C中基于NSObject的Model类 学习答疑:欢迎来技术群里提问并做分享 学习工具:Xcode开发环境 学习内容:熟悉Model的作用以及基本用法 我们在开发中为什么要创建Model,主要因为我们在接收服务器给我们返回的数据时候,我们需要用来保存这些数据,那么我们就会创建一个所谓的Model,其实就是基于NSObject类,然后创建一些它的属性,来保存相应的值,也方便其他的类来调用,当然了,我们要考虑在这个Mode

用 Eclipse 插件提高代码质量

如果能在构建代码前发现代码中潜在的问题会怎么样呢?很有趣的是,Eclipse 插件中就有这样的工具,比如 JDepend 和 CheckStyle,它们能帮您在软件问题暴露前发现这些问题.在 让开发自动化 的本期文章中,自动化专家 Paul Duvall 将带来一些关于 Eclipse 插件的例子,您可以安装.配置和使用这些静态分析插件,以便在开发生命周期的早期预防问题. 关于本系列 作为一名开发人员,我们的工作就是为终端用户将过程自动化:然而,我们当中有很多人却忽视了将我们自己的开发过程自动化

进阶篇第五期:UIScrollView的那点事儿

继中级篇后呢,我们在这里做一下ScrollView的简单使用哦 废话不多说啦,先用代码来为scrollView里面加一些视图吧   - (void)buildSubViewsInScrollView:(UIScrollView *)scrollView {     for (int i = 0; i < scrollView.contentSize.width / CGRectGetWidth(scrollView.bounds); i++) {         for (int j = 0;