博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
别担心,这些代码写的比你的糟糕多了!
阅读量:2160 次
发布时间:2019-05-01

本文共 1385 字,大约阅读时间需要 4 分钟。

来源:麦叔编程

作为一个老司机,我见过很多让人吐血的代码,关键是其中有些我自己写的。

对于这种代码,我只能说:咱看不懂,也不敢修改!

下面我分享一些看了让人啼笑皆非的代码。最后再分享几个很简单实用的写代码的技巧。

1. 糟糕代码大赏

下面来看一些糟糕的代码,是不是比你写的还糟糕:

有办法可以更简洁一点吗?

都说Scratch容易懂,我怎么觉得这个很难懂呢?

再来一个Scratch的程序

大哥,用程序画图也不带这样的吧?

这个代码一共980行,没有更好点的写法吗?

这是我同事写的,3个月后,我问他,他自己都不理解了!

支持6个玩家的游戏代码,如果要支持100个玩家呢?

异曲同工之妙,一个编程老师写的代码,不担心教坏学生吗?

这个代码,你到底想怎么样?

简洁是美德,但是这样真的难以看懂啊!

这样的代码,我可能也写过,都是为了捉异常:

这个代码,开发者本人能在一分钟内看懂,我就服了他了

学点正则表达式会死吗?据说来自12306的源代码:

这是啥东东?

WTF?

确定写这个代码的人不会被打吗?

人肉递归?

写注释是好习惯,可你这也太多了吧?

2. 把代码写的好点的5个小技巧

曾经有个大厂程序员朋友说过:

一个程序模块,每个新接手的人都会说之前写这个模块的人是SB!

然后自己添加功能,添加功能,添加功能!

一段时间后,交给后一个人接手,并重复着这个故事!

为了让这个故事在你这里结束掉,我来分享几个很简单的小技巧:

  1. 取有意义但简单的变量名,避免i, j, k, l, m, n这样的变量,也尽量避免太长的变量名。

    当然,我同意:取变量名是世界上最难的事情之一!

  2. 每个函数不超过15行,这不是绝对,总的来说,函数不要太长。

    这怎么可能做到呢?可以的,看下一点建议。

  3. 把一大段逻辑封装到多个小的函数中,每个函数实现一个比较独立的功能,函数名要直观,看了就知道是什么意思。

    有时候你觉得没法分割了,其实可以的。一个复杂的逻辑判断都可以封装到一个函数中,这样在主函数中会非常清楚的知道在做什么。比如:

    def is_maishu_handsome():  # 此处有很多逻辑判断  return True

    如果你去看一些优秀的源代码,比如编程语言自带的库中的源代码,会发现很多这种短小的函数,它们都基本做到了上面三个点。

  4. 适当加注释

    这里说的是适当,但是不宜过多。为什么呢?因为代码本身就是最好的注释。好的代码,如行云流水,看了就知道什么意思。还需要那么多解释吗?

    所以首要的是写好的代码,不要过多靠注释来掩饰自己的不够优雅的代码。

  5. 勇于重构代码

    代码就像一个人,开始身材苗条又单纯,容易看懂,运行速度也快。但随着生长,变得又胖又臃肿,不敢做出改变。这时候人要加强锻炼,不断突破自己。而代码也是一样的,随着功能不断增加,必然会代码越来越长,逻辑越来越复杂,这时候大胆的去重构,提取新的函数,应用新的设计,才能继续保持年轻,快速。

就分享5个,如果你能做到,上面的故事就会从你这里终结掉。谢谢你为中国代码的平均水平提高作出贡献!

---------End---------

  • 回复 600 ,获取 

  • 回复 markdown ,获取 

  • 回复 time , 获取 

  • 回复 str, 获取 

  • 回复 SQL50 ,获取 

  • 回复 mat ,获取 

????分享、点赞、在看,给个三连击呗!???? 

转载地址:http://rizzb.baihongyu.com/

你可能感兴趣的文章
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
关于“团队建设”的反思
查看>>
利用jekyll在github中搭建博客
查看>>
Windows7中IIS简单安装与配置(详细图解)
查看>>
linux基本命令
查看>>
BlockQueue 生产消费 不需要判断阻塞唤醒条件
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
win10将IE11兼容ie10
查看>>
checkbox设置字体颜色
查看>>
第一篇 HelloWorld.java重新学起
查看>>