一张图说明不写备注的重要性
来源:互联网 发布:c语言地址符号 编辑:程序博客网 时间:2024/05/16 14:05
“音乐是全世界同行的语言”
写了几年代码,这才是我见过的第二份备注极少,却很容易阅读,而且扩展健壮的代码的
第一份是08年的时候一个澳洲老写的给财务用的代码,vba写的命名极长,一个简单功能代码很多,却就算被一个不是计算机的人乱改,框架还是健在
第二份就是我手上这份手游代码了
大概是这个样子的
if (OnTheRunFuelManager.Instance.Fuel <= 0 && !OnTheRunFuelManager.Instance.IsFuelFreezeActive()) { if (PlayerPersistentData.Instance.FirstTimeFuelFinished && OnTheRunDataLoader.Instance.GetFirstFuelGiftEnabled()) { OnTheRunUITransitionManager.Instance.OpenPopup("FuelGiftPopup"); } else if (OnTheRunCoinsService.Instance.IsFreeFuelVideoAvailable()) { OnTheRunUITransitionManager.Instance.OpenPopup("FuelRefillPopup"); } else { Manager<UIRoot>.Get().ShowWarningPopup(UICurrencyPopup.ShopPopupTypes.Fuel); } } else { if (OnTheRunTutorialManager.Instance.TutorialActive) { if (currentSetIndex != 0 || currentCarsList != Cars_EU || categorySelectedCar[currentSetIndex] != 0) OnTheRunTutorialManager.Instance.LocationAndCarChanged = true; backupCurrentSetIndex = currentSetIndex; backupCurrentCarsList = currentCarsList; backupCategorySelectedCar = categorySelectedCar[0]; currentSetIndex = 0; currentCarsList = Cars_EU; categorySelectedCar[currentSetIndex] = 0; //SetupParkingLot(); backupSliderPosition = Cars_EU_Scroller.transform.localPosition; Cars_EU_Scroller.gameObject.SetActive(true); Cars_EU_Scroller.transform.localPosition = Vector3.one; if (!OnTheRunFuelManager.Instance.IsFuelFreezeActive()) OnTheRunFuelManager.Instance.Fuel--; } this.StartCoroutine(this.StartPlay()); }
即使你完全不懂C#,完全不懂游戏逻辑,也是没关系的,只要你懂一点点英文,你就能很简单的看懂这段代码,知道如何做二次开发
这段代码明显的逻辑就是,先判断体力(或者有没体力冻结的BUFF,就是玩家有没充值),如果玩家都不满足以上条件,扣1个体力,并开始游戏
整段代码不需要一点备注,因为英文本身就是一种语言,本来就是用来沟通的,并不是说一定只能是程序员和硬件沟通的语言
我们真的能够很容易地从代码里面读懂原代码程序员的思想
也并不是所有代码都可以的,起码我写的代码你们可能读不懂,或者国内很多程序员写的代码都晦涩难懂,以至于某外行人,部分内行人觉得应该写备注要不鬼知道你在写什么
事实就摆在眼前,这段代码写的吊的地方在于哪里呢(我并不是要和你研究算法多牛,用最少的代码做最多的事情,优化做得多么好)
首先我的理解,1段代码写的好坏在于写这代码的人的个性,和他有没做优化工作没关的(很多人都说重写,重构,我真没见过一个成熟的商业团队有重构的时间的,商业程序员是被付费,做有偿的程序开发劳动的)
然后我们来分析一下这段代码,首先用了面向对象和设计模式,只是最简单的面向对象即可,class和单例
if (OnTheRunFuelManager.Instance.Fuel <= 0 && !OnTheRunFuelManager.Instance.IsFuelFreezeActive()){//就是这么简单的Instance判断而已,只要你是个程序员都能看出class里面的属性Fuel不是是布尔变量而是int吧//然后.IsFuelFreezeActive()也告诉你例这个方法是做什么用的}
所以我得到的很大启发就是,只要用面向对象,类,属性和方法名命名得稍微好一点,这样代码维护就很有效率,(并不是说面向对象多么优雅,性能多好,多容易扩展这些屁话)备注不用写,甚至文档也不用写了(事实上很多成功游戏工作室也不会有这个东西),因为策划需要的功能,都在代码里有体现了(文档是文字,代码也是文字,代码简化原则之一,能只写一份,为什么要维护2份捏,你也维护不过来,甚至还有人认为要写备注的,那可是3份文字啊)
虽然在国内要做到这种程度不容易,甚至很多功能我简直就不写对象了,一些好的习惯还是可以坚持一下的,说不定理想万一实现了呢
ps.当然很重要一点是1个基础功能很好的IDE能支持开发,各种查找,各种类,方法的跳转,debug功能等等
对于程序员来说,上面说这么多都是废的,其实根本就是一张图就懂了
下面图是反例,你代码写的烂,确实需要备注补救的,可真补救得了么?
要是没有前文后理,没有工具,你能看出来2个SendMessage的区别么?怎么就不能起名起好一点呢
public class GameMain:MonoBehaviour{private GameObject objCubeRight;.....objCubeRight.SendMessage("");.....}
(这个和你是不是U3D初学者没关系的,明显就看出来你是不是程序初学者。。。。
拿这个哥们做反例确实不好意思,这个初哥和上面专业写程序对比不合适,我道歉,我经常也胡乱起名的,我比较懒
至于上面专业写程序的代码也没有我刚说的那么好(重点不在有无备注,上面专业的代码已经比较专业的,但还不够好),至于为什么,我后面的博客再普通)
原图出处: 点击打开链接
0 0
- 一张图说明不写备注的重要性
- 一张图说明CDN网络的原理
- 一张图说build背后的故事
- 一张图说明udev的工作流程
- 一张图说明公司的差别
- 一张图说明访问网站的流程
- 一张图说明CDN网络的原理
- 一张图说明CDN网络的原理
- 一张图说明CDN网络的原理
- 一张图说明CDN网络的原理
- 一张图说明CDN网络的原理
- 一张图说尽CRM
- js 一张图说明了
- 一张图说明 GIT
- 一张图说CSS基础
- 一张图说明电商架构
- 一张图说明做网站的不易与艰辛
- 一张图说明操作系统的主要结构功能
- 选择排序小结
- JSP编程
- 校验银行卡号是否正确
- Selenium在远程中的截图
- eclipse编译器背景及字体设置
- 一张图说明不写备注的重要性
- aspx部署加载失败的解决办法
- Ubuntu下安装MySQLdb(mysql-python)的过程
- 散列表
- java笔记2
- 函数的指针
- objc_msgSend()报错Too many arguments to function call ,expected 0,have2
- eclips导出项目以及修改相关设置,导入android studio
- Mycat生产实践---生产环境部署