【swift 代码规范】

  • List item

代码架构分层

一、服务层

1.数据

2.网络请求

3.缓存处理

二、业务层

三、表现层

代码分块

 	// MARK: - Member Variables// MARK: - Sturct & Lazy Properties// MARK: - Class LifeCycle// MARK: - Class PrivateMethod// MARK: - Class PublicMethod// MARK: - extension Event// MARK: - extension UI// MARK: - extension System Delegate&DataSource// MARK: - extension Private Delegate&DataSource

一、Member Variables

1.当前Controller需要的私有变量
2.当前Controller需要的全局或公开变量

二、Sturct & Lazy Properties

1.当前Controller需要的结构体
2.当前Controller需要的enum
3.当前Controller需要的懒加载对象等

三、Class LifeCycle

1.当前Controller声明周期函数

	// lifecyle 1override func loadView() {super.loadView()}// lifecyle 2override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view.}// lifecyle 3override func viewWillAppear(_ animated: Bool) {super.viewWillAppear(animated)}// lifecyle 4override func viewWillLayoutSubviews() {super.viewWillLayoutSubviews()}// lifecyle 5override func updateViewConstraints() {super.updateViewConstraints()}// lifecyle 6override func viewDidLayoutSubviews() {super.viewDidLayoutSubviews()}// lifecyle 7override func viewDidAppear(_ animated: Bool) {super.viewDidAppear(animated)}// lifecyle 8override func viewWillDisappear(_ animated: Bool) {super.viewWillDisappear(animated)}// lifecyle 9override func viewDidDisappear(_ animated: Bool) {super.viewDidDisappear(animated)}

2.Controller布局常用的有xib、storyboard以及代码frame、代码snp布局
2.Controller在viewdidload中添加子view
3.xib、storyboad布局使用lifecycle 1读入页面
4.frame布局使用lifecycle 4进行布局
5.snp布局使用lifecycle 5进行布局

四、Class PrivateMethod

1.当前Controller需要的私有方法

五、Class PublicMethod

1.当前Controller供别的类调用的公开方法

六、extension Event

1.当前Controller声明的事件

七、extension UI

1.当前Controller声明的View

八、extension System Delegate&DataSource

1.当前Controller声明的系统代理方法

九、extension Private Delegate&DataSource

1.当前Controller声明的自定义代理方法

代码风格

一、命名

二、注释

三、缩进与空格规范

四、团队协作

说明:一个好的团队,理所当然有其严格的代码规范,好的代码不仅可以提高团队的开放效率,也更利于团队项目的后期维护,统一的代码风格,也是团队的核心,所以规范代码很有必要!

1.删除多余的空行 所有方法与方法之间空1行 所有代码块之间空1行
2.删除多余的注释,删除注释掉的代码,删除没有意义的注释
3.删除多余的方法,如果方法没有使用到,请删除它,如果方法没有执行任何业务逻辑,请删除它或者给出一定注释
4.删除未被使用的资源文件
5.添加必要的注释,所有.h 文件中的property 需要给出注释,所有自定义的方法需要给出注释,比较大的代码块需要给出注释,所有代码中出现的阿拉伯数字需要给出注释,程序中出现加密/解密 逻辑的操作地方,需要给出注释说明过程(无论是系统还是自定义)
6.整体代码风格需要统一,代码后面的”{“ 不需要单独占用一行,逻辑运算符 与“|” 代码之前空一格,“MARK -” 与下面的代码之前不要空行,遵循一般性的代码规范

loadview 和 viewdidload
oc代码规范

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/12595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular中组件设计需要注意什么?

在 Angular 中设计组件时,有几个重要的方面需要注意。以下是一些建议: 1、单一职责原则:确保每个组件只负责一个明确定义的任务。这有助于保持组件简单、可维护,并且易于重用。 2、组件通信:了解组件之间的通信方式。…

Python(四十九)获取列表指定元素的索引

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

vue2企业级项目(七)

vue2企业级项目(七) 组件封装 src目录下创建components/index.js const components require.context("./modules", true, /index\.js$/);export default {install: (Vue) > {components.keys().forEach((key) > {let component compo…

汇编调用C语言定义的全局变量

在threadx移植中,系统的systick通过了宏定义的方式定义,很难对接库函数的时钟频率,不太利于进行维护 所以在C文件中自己定义了一个systick_Div的变量,通过宏定义方式设定systick的时钟频率 在汇编下要加载这个systick分频系数 …

UDS诊断协议

UDS本质上是一系列服务的集合,包含6大类,共26种。每种服务都有独立的ID,即SID。 请求 SID(1Byte) 参数 SID(1Byte) Sub-function(1Byte) 参数 SID DID(2Bytes) 响应 肯定响应 SID0x40(1Byte) Sub-function(根据请求是否存在) 参数…

Windows数据类型LPSTR学习

Windows在C语言的基础之上又定义了一些Windows下的数据类型;下面学习一下LPSTR; LPSTR和LPWSTR是Win32和VC所使用的一种字符串数据类型。LPSTR被定义成是一个指向以NULL(‘\0’)结尾的32位ANSI字符数组指针,而LPWSTR是一个指向以NULL结尾的64…

逻辑回归分析实战(根据鸢尾花的性质预测鸢尾花类别)

紧接着上过一个线性回归模型(一元线性回归模型实战) 一元线性回归模型和逻辑回归模型是统计学中常见的两种回归模型,它们有以下几点不同之处: 1. 目标变量类型:一元线性回归模型适用于连续型目标变量,即预测…

2023年基准Kubernetes报告:6个K8s可靠性失误

云计算日益成为组织构建应用程序和服务的首选目的地。尽管一年来经济不确定性的头条新闻主要集中在通货膨胀增长和银行动荡方面,但大多数组织预计今年的云使用和支出将与计划的相同(45%),或高于计划的(45%)…

大数据Flink(五十三):Flink流处理特性、发展历史以及Flink的优势

文章目录 Flink流处理特性、发展历史以及Flink的优势 一、Flink流处理特性 二、发展历史

opencv-28 自适应阈值处理-cv2.adaptiveThreshold()

什么是自适应阈值处理? 对于色彩均衡的图像,直接使用一个阈值就能完成对图像的阈值化处理。但是,有时图像的色彩是不均衡的,此时如果只使用一个阈值,就无法得到清晰有效的阈值分割结果图像。 有一种改进的阈值处理技术&#xff…

五、控制流(2)

本章概要 returnbreak 和 continue臭名昭著的 gotoswitchswitch 字符串 return 在 Java 中有几个关键字代表无条件分支,这意味无需任何测试即可发生。这些关键字包括 return,break,continue 和跳转到带标签语句的方法,类似于其…

不管如何吐槽,购买iPhone的用户依然义无反顾,苹果继续增长

市调机构IDC公布的二季度数据显示,苹果成为前五名之中除华为之外第二家取得增长的手机品牌,而其他国产手机品牌的出货量都在下滑,显示出国内的消费者仍然在热烈追捧iPhone。 二季度苹果在国内市场的手机出货量同比增长6%,虽然增速…

Android Studio下载及安装和Gradle的配置

文章目录 下载安装修改Sdk的位置创建项目修改Gradle的位置查看AS版本工具栏--View项工具栏--Build下的功能说明Build Variants视图说明下载模拟器(avd)/安卓虚拟设备屏幕熄灭功能关闭虚拟设备功能删除自己开发的应用软件将开发的应用运行到虚拟设备上。 …

从分片传输到并行传输之大文件传输加速技术

随着大文件的传输需求越来越多,传输过程中也会遇到很多困难,比如传输速度慢、文件安全性低等。为了克服这些困难,探讨各种大文件传输加速技术。其中,分片传输和并行传输是两种比较常见的技术,下面将对它们进行详细说明…

Java版知识付费源码 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台

提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含:录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署,免费售后,专业技术指导,支持PC、APP、H5、小程序多终端同步,支持二次开发…

【Opencv】视频跟踪算法KCF

目录 KCF算法简介opencv实现代码copencv实现代码python KCF算法简介 KCF(Kernelized Correlation Filter)是一种基于核相关滤波器的目标跟踪算法。它通过学习目标的外观特征和使用核相关滤波器进行目标定位。KCF属于传统算法的单目标跟踪器。下面是对KC…

【Java】Java多线程编程基础

文章目录 1. 进程与线程1.1 进程与线程的基本认识1.1.1 进程(Process)1.1.2 线程(Thread) 1.2 为什么会有线程1.2.1 以看视频为例 2. 多线程实现2.1 Thread类实现多线程2.2 Runnable接口实现多线程2.3 Callable接口实现多线程2.3 …

CTF线下赛AWD知识点【持续完善ing】

文章目录 CTF线下赛AWD知识点AWD规则前期准备SSH登录口令登录密钥登录 改密码SSH密码修改mysql密码修改 备份数据备份目录备份数据库 查找后门 自动提交flag防御思路基础查杀寻找最近20分钟修改过的文件寻找行数最短的文件关键字查杀查找命令执行函数 文件监控杀不死马0x01.杀进…

Grafana - TDEngine搭建数据监测报警系统

TDengine 与开源数据可视化系统 Grafana 快速集成搭建数据监测报警系统 一、介绍二、前置条件三、Grafana 安装及配置3.1 下载3.2 安装3.2.1 windows安装 - 图形界面3.2.2 linux安装 - 安装脚本 四、Grafana的TDEngine配置及使用4.1 登录4.2 安装 Grafana Plugin 并配置数据源4…

学习笔记|大模型优质Prompt开发与应用课(二)|第一节:大模型应用密码—Prompt的一千种打开方式

文章目录 第一节:大模型应用密码—Prompt的一千种打开方式01你可能听过一个小故事1910华盛顿纺织厂罢工事件 02 小问题:哪些场景会被提效类目一︰减少重复性工作的成本(降本)例如∶做策划初稿、写JD、润色文案prompt生成结果prompt生成结果prompt生成结果promptprom…