文档章节

代码风格个性化和结构化

刘大神
 刘大神
发布于 2017/06/09 14:23
字数 723
阅读 32
收藏 0

首先说一下,代码风格个性化和结构化在笔者这里的定义: 1. 代码风格个性化是指写出风格一致的代码,不管是在团队项目里,还是个人项目里,有良好风格的代码更加能让人看懂逻辑,赏心悦目 2. 代码结构化是指为整套系统(或是框架)梳理好逻辑,做好结构梳理,很大程度上避免了由于“不专业”所导致的bug

一、 代码风格

每个人都有自己的编码风格,重点说一下空行及换行

空格:
	在代码中,应该合理利用空行;在逻辑代码中,每段都会有相对联系较大的代码,以及相对联系不大的代码,相对紧凑的代码之间就不用使用空行,这样能让逻辑清晰,让看代码的人能够理解,哪部分的逻辑是相对紧凑,哪部分的逻辑联系不是很大


换行:
	在代码中,经常会出现if else 等类似的判断条件,所以也避免不了判断条件过长的时候,合理的换行会让代码更加清晰

二、 代码结构化

1. 在代码中,经常会出现数字,这些数字或是某些限制,或是某些条件,这种数据都统一用枚举实现,写在common里面

2. 整理、理解类与类之间的联系,确定功能与功能之间独立性,不要试图在功能模块A中写上功能模块B的代码,这样不仅增加维护成本,还加大了代码的复杂程度

3. 代码一定要简洁明了,既能让其他人看懂,又能减少不必要的bug出现的几率;例如:现在有一个需求,笔者们需要做一个5杀,同时击杀超过5个,一样算做5杀,正常逻辑代码如下(c++):

	if (kill_count >=5)
		kill_count = 5;
	else
		kill_count += 1;       #假设 已经定义kill_count 为击杀数


改进:

	kill_count = kill_count >= 5 ? 5 : kill_count += 1				#清晰,简洁,明了



4. for循环中,有时候需要遍历,找到其中一个符合条件的值,例如(c++ 代码):
	int k = 0;
	for(int i = 0; i != 10; ++i)
	{
		if (i == 5)
			k = i;
	}									#遍历10次

	改进:
	int k = 0;
	for(int i = 0; i != 10; ++i)
	{
		if (i == 5)
		{
			k = i;
			break;						#遍历5次
		}
	}



5. 多次在程序中出现的工具性代码,应单独整理成一个工具类

6. 基础功能中不要添加和其他功能有关的代码,这是解耦合的思想

总结: 关于写代码,并不是只有写代码,其他边缘化的东西也需要关注,除了笔者上面提到的,还有其他很多需要注意的地方,希望读者多多总结

© 著作权归作者所有

刘大神
粉丝 8
博文 21
码字总数 18133
作品 0
朝阳
高级程序员
私信 提问
AI设计师“鹿班”核心技术公开:如何1秒设计8000张海报?

本文介绍了视觉生成的现状,智能设计的框架和流程、应用案例及未来前景。通过本文的学习,可以对鹿班这个产品,以及视觉生成相关技术有基础性的认识、了解行业的现状以及未来的发展趋势。 演...

技术小能手
2018/05/09
0
0
今晚8点直播 | 详解百度基于模板的OCR结果结构化处理技术

随着行业的发展和技术的成熟,文字识别(OCR)目前已经应用到了多个行业中,比如物流行业快递包裹的分拣,金融行业的支票单据识别输入,交通领域中的车牌识别,以及日常生活中的卡证、票据识...

AI科技大本营
2018/12/20
0
0
大数据5V特点 --- 5Vs of Big Data

IBM提出了大数据”5V”特点: 一、Volume:数据量大,包括采集、存储和计算的量都非常大。大数据的起始计量单位至少是P(1000个T)、E(100万个T)或Z(10亿个T)。 二、Variety:种类和来源...

董黎明
2018/08/29
116
0
从海量数据中提取精准洞察,Watson AI 不一样!

非结构化数据继续呈指数级增长, 各个行业的企业 都在积极探索或利用人工智能 (AI) 技术, 以期从能够访问的海量数据中提取洞察。 IBM Watson 提供了各种各样的、 即时可用、可定制的 AI 服务...

IBMdW
2018/04/25
29
0
我们是唯一可以确定自己的学习的人

主题一:学习是个性化的——Your future is in your hands. 我们来谈第一个主题:个性化学习。 不知从什么时候开始,个性化学习变成了当代教育界炙手可热的话题。许多人预测这将是教育系统未...

竹说
02/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
28分钟前
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部