前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS - 代码Review(一)

iOS - 代码Review(一)

作者头像
Wilbur-L
修改于 2021-10-27 06:27:20
修改于 2021-10-27 06:27:20
64300
代码可运行
举报
文章被收录于专栏:iOS底层原理iOS底层原理
运行总次数:0
代码可运行

一·代码命名基础

1.清晰且简短

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
insertObject: atIndex: //通过
insert: at: //不清楚在插入什么
removeObjectAtIndex: //通过,即使有点长 代码命名优先级 清晰>简短
removeObject: //通过
remove: //不清楚 正在删除什么

2.不要缩写,哪怕很长

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
destinationSelection //驼峰命名 不缩写 通过
destSel //不清楚
setBackgroundColor: //设置背景颜色 通过
setBkgColor: //不清晰

注:虽然有些写法是缩写,但需要考虑到遇到你的代码或函数名称可能是不同语言文化背景习惯的人时候

3.一致&避免与系统函数冲突

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (NSInterger)tag //tag 已经在NSView,NSCell,NSControll 中已经有定义
- (void)setStringValue:(NSStirng *)str //在UIKit Cocoa中 声明property会具有setter getter 除非你要重写

4.排版约定 (每个公司的代码规范会有些不同,但大都遵循一定的规范)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
在一份view.m文件中应遵循统一的排版
//
//  .m
//  app
//
//  Created by you on 202x/x/xx.
//  Copyright © 2021 you. All rights reserved.
//

#import "Foundation.h" //引入头文件
#import "NetWorkManager" //网络层单独封装
@interface xxx()<遵循协议,UICollectionViewDelegate,UICollectionViewDataSource>
//UI层
@property (nonatomic, strong) UIButton *XXXCloseButton;
@property (nonatomic, strong) UIView *backgroundView;
//网络参数层
@property (nonatomic, storng) NSArray *dataArray; 
@property (nonatomic, assign) BOOL didPayStatus;
@end

@implementation xxx
#pragma mark - 生命周期

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDidAppear:animated];
}

- (void)viewDidLoad {
    [super viewDidLoad];
}

#pragma mark - 初始化
- (instancetype)init {
    if (self = [super init]) {
        [self initUI];
    }
    return self;
}

- (void)initUI {
    _dataArray = [NetWorkManager sendPostNetWorkRequest];
    [self addSubview:self.backgroundView];
    [self addSubview:self.XXXCloseButton];
}

#pragma mark - tableView协议&代理

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kCell forIndexPath:indexPath];
    cell.model = self.model[indexPath.row];
    return cell;
} //根据MVC架构需要把数据通过Model传给视图
//每一个函数间隔一行
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return self.model.count; 
}

#pragma mark - Action&Selector

- (void)yourNamedFuntion:(UIButton *)sender {
    NSLog(@"按钮方法");
}

#pragma mark - 懒加载 //添加标记容易找
//懒加载放在最后
- (UIView *)backgroundView {
    if(!_backgroundView) {
        _backgroundView = [[UIView alloc]init];
        _backgroundView.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight); //宽高使用宏定义 x,y默认0
        _backgroundView.bottom = xx //添加x y 约束
        _backgroundView.left = xx //添加x y 约束
        _backgroundView.backgroundColor = [UIColor blueColor];
    }
    return _backgroundView;
}
//按照视图加载顺序 addSubview 1.背景 addSubview 2按钮
- (UIButton *)XXXCloseButton {
    if (!_XXXCloseButton) {
        _XXXCloseButton = [[UIButton alloc]init];
        _XXXCloseButton.frame = CGRectMake(0, 0, kScreenWidth, kScreenHeight); //请把括号内的空格也填好
        _XXXCloseButton.layer.cornerRadius = 8;
        [_XXXCloseButton addTarget:self action:@selector(yourNamedFuntion:) forControlEvents:UIControlEventTouchUpInside];
    }
    return _XXXCloseButton
}

@end

二·命名方法

1.如果函数会对当前对象操作,以动词开头

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 - (void)invokeWithTarget:(id)target;
 - (void)selectTabViewIndex:(NSInterger)index;
 //不要使用do does 这些助动词

2.如果方法返回接受者对属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (NSSize)cellSize;
- (NSSize)calcCellSize; //不清晰
- (NSSize)getCellSize; //不要使用助动词

3.参数前使用关键字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 - (void)buttonAction:(int)index name:(NSString *)name; //通过
 - (void)buttonAction:(int)index :(NSString *)name; //不能忽略关键字

4.当函数只有一个参数时候需要提前描述

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 - (void)viewWithTag:(NSInterger)aTag;

5.当重写构造方法时候需要把参数添加到末尾

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (instancetype)initWithFrame:(CGRect)frame
- (instancetype)initWithFrame:(CGRect)frame dataArray:(NSArray *)dataArray;

6.不要通过And来链接属性关键字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (int)runModelForDirectory:(NSString *)path andFile:(NSString *)fileName; //不通过
- (int)runModelForDirectory:(NSString *)path WithFile:(NSString *)fileName; //通过
//通常来说一般函数需要的参数最好不要超过4个

7.通知KVO和异常

[关联类的名称] + [Did | Will] + [房间] + 通知

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
static NSString *const CurrenClassNameWillMoveNotification = @"CurrenClassNameWillMoveNotification";
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(turnBackToRoom:) name:@"CurrenClassNameWillMoveNotification" object:nil];

8.枚举

对具有整数相关的常数使用枚举

有命名枚举

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
typedef enum : NSInteger{
    acceptOrder = 0,
    denyOrder,
    refundOrder,
    rejectOrder,
    finishedOrder
}status;

无命名枚举

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
enum {
    acceptOrder = 0,
    denyOrder = 1 << 0,
    refundOrder = 1 << 1,
    rejectOrder = 1 << 2,
    finishedOrder = 1 << 3,
};

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
世界上最美的公式——欧拉公式
在数学历史上有很多公式都是欧拉(leonhard euler 公元1707-1783年)发现的,它们都叫做
meihuasheng
2021/03/16
2.3K0
复数整理
复数是由实部和虚部组成的数: z=a+bi    (i^2=-1),其中a为实部,b为虚部。
算法之名
2022/11/29
2.2K0
复数整理
扒一扒那些叫欧拉的定理们(十)——群论观点下的欧拉公式进阶
在上一篇中,我们从群论的观点给大家开了个头,介绍了直线上的两个变换群,分别对应正数乘法群和实数加法群,并指出了它们的同构关系,并且正是以指数函数作为映射函数。今天我们继续看,这些内容是怎么帮我们理解欧拉公式的。还是重复一下欧拉公式的内容:
magic2728
2021/08/06
1.2K0
知乎热议最丑陋的数学公式:「四次方程求根」高票当选
一直以来数学都是被认为神秘、深奥的一门学科,一个极端简洁又极端精确的公式就能够描述问题,并给出解决方案。
新智元
2021/10/12
1.6K0
扒一扒那些叫欧拉的定理们(八)——欧拉公式和自然对数的底e
从今天开始,我们开始进入一个新的领域,也是欧拉他老爷子开创的,来看看复数领域的欧拉定理,以及欧拉公式里有着怎样的智慧。
magic2728
2021/07/14
1.5K0
吴大正信号与系统-频域分析总结
吴大正的书现在来看是真不错,奥本海姆让我迷失在了知识的海洋。反而现在看这种国内教科书的感觉非常好。
云深无际
2024/10/11
2280
吴大正信号与系统-频域分析总结
《信号与系统》很难?也许你应该看看这篇文章
小枣君:大家都知道《信号与系统》是一门很难的课。今天给大家推荐一篇文章,看了之后,也许就会找到打开这门课的正确方式。
鲜枣课堂
2019/07/22
2.1K0
最美公式
这个欧拉公式的神奇之处在于,它把数学中最基本的五个常数,以非常优美的形式结合了起来:   e——自然对数,代表了大自然   π——圆周率,代表了无限   i——虚数单位,代表了想象   1——数字一,代表了起点   0——数字零,代表了终点   乘法代表结合,指数代表加成,加法代表累计,等号代表统一。
一个会写诗的程序员
2020/10/28
9830
最美公式
计算机搞定44年几何难题,原来这2个人25年前猜对了
最近,来自美国、加拿大、瑞士的4位数学家,用C++和MATLAB程序解出了一个6元105项方程的59组特殊解。
量子位
2021/02/26
5510
计算机搞定44年几何难题,原来这2个人25年前猜对了
刚体力学整理
质点:一个有质量的几何点,忽略其大小、形状及内部结构的影响,在空间只占据一个点的位置。它是对实际研究对象的简化,理想模型。
算法之名
2023/10/16
1.1K0
刚体力学整理
上帝公式——Euler's formula
虽然在我们对于自然数的理解下,这样求解出来的数没有任何实际意义,但是其在数学中却是真实存在的。
曼亚灿
2023/07/24
2.4K0
上帝公式——Euler's formula
7_3_三相电压的空间矢量表示_理论推导
这里面提到了“若能将三相3个标量用一个合成量表示,并保持信息的完整性,则三相的问题将简化为单相的问题”。下面聊聊这个问题。
用户5908113
2024/07/15
2750
7_3_三相电压的空间矢量表示_理论推导
盘点十个最伟大的公式,1+1=2仅排到了第七
从什么时候起我们开始厌恶数学?这些东西原本如此美丽,如此精妙。这个地球上有多少伟大的智慧曾耗尽一生,才最终写下一个等号。每当你解不开方程的时候,不妨换一个角度想,暂且放下对理科的厌恶和对考试的痛恨。因
小明互联网技术分享社区
2021/06/24
7930
大模型与AI底层技术揭秘(41)割圆术与雪糕
小H在楼下见到S和他的妈妈,S的妈妈对S说:你看,你还记得小H当初教你背圆周率吗?
用户8289326
2024/07/01
1410
大模型与AI底层技术揭秘(41)割圆术与雪糕
世界上最伟大的十大公式
导读:几年前英国科学期刊《物理世界》曾让读者投票评选了“最伟大的公式”,最终榜上有名的十个公式既有无人不知的1+1=2,又有著名的E=mc^2;既有简单的-圆周公式,又有复杂的欧拉公式……
边缘计算
2020/09/08
2.9K0
高数计算,我Python替你承包了
在学习与科研中,经常会遇到一些数学运算问题,使用计算机完成运算具有速度快和准确性高的优势。Python的Numpy包具有强大的科学运算功能,且具有其他许多主流科学计算语言不具备的免费、开源、轻量级和灵活的特点。本文使用Python语言的NumPy库,解决数学运算问题中的线性方程组问题、积分问题、微分问题及矩阵化简问题,结果准确快捷,具有一定的借鉴意义。
我被狗咬了
2019/09/23
2.5K0
高数计算,我Python替你承包了
傅里叶变换公式整理,意义和定义,概念及推导
看到论坛有一个朋友提问为什么傅里叶变换可以将时域变为频域? 这个问题真是问到了灵魂深处。
全栈程序员站长
2022/09/13
5.1K0
傅里叶变换公式整理,意义和定义,概念及推导
除了欧拉公式,这8个数学公式也足够美丽且神奇
我对这个概率分布公式的认识是在上《普通物理》(我读书时大学物理叫做普通物理)时,记得是讲解气体分子的碰撞。
程序员小强
2020/02/11
2.4K0
英国科学期刊选出了世界上最美丽的10个公式
◆ ◆ ◆ 导言 英国科学期刊《物理世界》曾让读者投票评选了“最伟大的公式”,最终榜上有名的十个公式既有无人不知的1+1=2,又有著名的E=mc2;既有简单的圆周公式,又有复杂的欧拉公式……从什么时候起我们开始厌恶数学?这些东西原本如此美丽,如此精妙。这个地球上有多少伟大的智慧曾耗尽一生,才最终写下一个等号。每当你解不开方程的时候,不妨换一个角度想,暂且放下对理科的厌恶和对考试的痛恨。因为你正在见证的,是科学的美丽与人类的尊严。 ◆ ◆ ◆ 圆的周长公式(The Length of the Circumf
大数据文摘
2018/05/25
4780
数学原来这么有趣,66组超炫动图唤醒你的思维!
无论怎样,看完这一组动图,你不仅能够感受到数学美丽的一面,同时也会对我们常见的公式定理有更深刻、直观的理解!
IT阅读排行榜
2019/01/23
1.3K0
数学原来这么有趣,66组超炫动图唤醒你的思维!
推荐阅读
相关推荐
世界上最美的公式——欧拉公式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验