首页 开发编程 正文

php怎么去掉注释

一句话概括衡量代码质量的唯一有效标准:WTF/min——RobertC.MartinBob大叔对于好代码的理解非常有趣,这个读代码的可能是后来的维护人员,任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,——GradyBooch好代码的特性很难给好的代码下一个定义,相信很多人跟我一样不会认为整洁的代码就一定是好代码...

php怎么去掉注释,什么样的代码叫好代码?

送大家以下java学习资料

简介: 我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。显然,这个问题并没有唯一的标准答案,谁都可以谈论自己的理解,今天谈谈我对于好代码的理解。

我们每天都与代码打交道,但当被问道什么是好的代码时,很多人可能会先愣一下,然后给出的回答要么比较空泛,要么比较散,没办法简单明了地概括出来。显然,这个问题并没有唯一的标准答案,谁都可以谈论自己的理解,今天谈谈我对于好代码的理解。

一句话概括

衡量代码质量的唯一有效标准:WTF/min —— Robert C. Martin

Bob大叔对于好代码的理解非常有趣,对我也有很大的启发。我们编写的代码,除了用于机器执行产生我们预期的效果以外,更多的时候是给人读的,这个读代码的可能是后来的维护人员,更多时候是一段时间后的作者本人。

我敢打赌每个人都遇到过这样的情况:过几周或者几个月之后,再看到自己写的代码,感觉一团糟,不禁怀疑人生。

我们自己写的代码,一段时间后自己看尚且如此,更别提拿给别人看了。

任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码,才是优秀的程序员。—— Martin Fowler

所以,谈到好代码,首先跳入自己脑子里的一个词就是:整洁。

好的代码一定是整洁的,给阅读的人一种如沐春风,赏心悦目的感觉。

整洁的代码如同优美的散文。—— Grady Booch

好代码的特性

很难给好的代码下一个定义,相信很多人跟我一样不会认为整洁的代码就一定是好代码,但好代码一定是整洁的,整洁是好代码的必要条件。整洁的代码一定是高内聚低耦合的,也一定是可读性强、易维护的。

高内聚低耦合

高内聚低耦合几乎是每个程序员员都会挂在嘴边的,但这个词太过于宽泛,太过于正确,所以聪明的编程人员们提出了若干面向对象设计原则来衡量代码的优劣:

开闭原则 OCP (The Open-Close Principle)单一职责原则 SRP (Single Responsibility Principle)依赖倒置原则 DIP (Dependence Inversion Principle)

最少知识原则 LKP (Least Knowledge Principle)) / 迪米特法则 (Law Of Demeter)

里氏替换原则 LSP (Liskov Substitution Principle)接口隔离原则 ISP (Interface Segregation Principle)组合/聚合复用原则 CARP (Composite/Aggregate Reuse Principle)

这些原则想必大家都很熟悉了,是我们编写代码时的指导方针,按照这些原则开发的代码具有高内聚低耦合的特性。换句话说,我们可以用这些原则来衡量代码的优劣。

但这些原则并不是死板的教条,我们也经常会因为其他的权衡(例如可读性、复杂度等)违背或者放弃一些原则。比如子类拥有特性的方法时,我们很可能打破里氏替换原则。再比如,单一职责原则跟接口隔离原则有时候是冲突的,我们通常会舍弃接口隔离原则,保持单一职责。只要打破原则的理由足够充分,也并不见得是坏的代码。

可读性

代码只要具有了高内聚和低耦合就足够好了吗?并不见得,我认为代码还必须是易读的。好的代码无论是风格、结构还是设计上都应该是可读性很强的。可以从以下几个方面考虑整洁代码,提高可读性。

命名

大到项目名、包名、类名,小到方法名、变量名、参数名,甚至是一个临时变量的名称,其命名都是很严肃的事,好的名字需要斟酌。

► 名副其实

好的名称一定是名副其实的,不需要注释解释即可明白其含义的。

/** * 创建后的天数 **/ int d; int daysSinceCreation;

后者比前者的命名要好很多,阅读者一下子就明白了变量的意思。

► 容易区分

我们很容易就会写下非常相近的方法名,仅从名称无法区分两者到底有啥区别(eg. getAccount()与getAccountInfo()),这样在调用时也很难抉择要用哪个,需要去看实现的代码才能确定。

► 可读的

名称一定是可读的,易读的,最好不要用自创的缩写,或者中英文混写。

► 足够短

名称当然不是越长越好,应该在足够表达其含义的情况下越短越好。

格式

良好的代码格式也是提高可读性非常重要的一环,分为垂直格式和水平格式。

► 垂直格式

通常一行只写一个表达式或者子句。一组代码代表一个完整的思路,不同组的代码中间用空行间隔。

public class Demo { @Resource private List<Handler> handlerList; private Map<TypeEnum, Handler> handlerMap = new ConcurrentHashMap<>(); @PostConstruct private void init() { if (!CollectionUtils.isEmpty(handlerList)) { for (Handler handler : handlerList) { handlerMap.put(handler.getType(), handler); } } } publicResult<Map<String, Object>> query(Long id, TypeEnum typeEnum) { Handler handler = handlerMap.get(typeEnum); if (null == handler) { return Result.returnFailed(ErrorCode.CAN_NOT_HANDLE); } return handler.query(id); } }

如果去掉了空行,可读性大大降低。

public class Demo { @Resource private List<Handler> handlerList; private Map<TypeEnum, Handler> handlerMap = new ConcurrentHashMap<>(); @PostConstruct private void init() { if (!CollectionUtils.isEmpty(handlerList)) { for (Handler handler : handlerList) { handlerMap.put(handler.getType(), handler); } } } public Result<Map<String, Object>> query(Long id, TypeEnum typeEnum) { Handler handler = handlerMap.get(typeEnum); if (null == handler) { return Result.returnFailed(ErrorCode.CAN_NOT_HANDLE); } return handler.query(id); } }

类静态变量、实体变量应定义在类的顶部。类内方法定义顺序依次是:公有方法或保护方法 > 私有方法 > getter/setter 方法。

► 水平格式

要有适当的缩进和空格。

► 团队统一

通常,同一个团队的风格尽量保持一致。集团对于 Java 开发进行了非常详细的规范。(可点击下方阅读原文,了解更多内容)

类与函数

► 类和函数应短小,更短小

类和函数都不应该过长(集团要求函数长度最多不能超过 80 行),过长的函数可读性一定差,往往也包含了大量重复的代码。

► 函数只做一件事(同一层次的事)

同一个函数的每条执行语句应该是统一层次的抽象。例如,我们经常会写一个函数需要给某个 DTO 赋值,然后再调用接口,接着返回结果。那么这个函数应该包含三步:DTO 赋值,调用接口,处理结果。如果函数中还包含了 DTO 赋值的具体操作,那么说明此函数的执行语句并不是在同一层次的抽象。

► 参数越少越好

参数越多的函数,调用时越麻烦。尽量保持参数数量足够少,最好是没有。

注释

► 别给糟糕的代码加注释,重构他

注释不能美化糟糕的代码。当企图使用注释前,先考虑是否可以通过调整结构,命名等操作,消除写注释的必要,往往这样做之后注释就多余了。

► 好的注释提供信息、表达意图、阐释、警告

我们经常遇到这样的情况:注释写的代码执行逻辑与实际代码的逻辑并不符合。大多数时候都是因为代码变化了,而注释并没有跟进变化。所以,注释最好提供一些代码没有的额外信息,展示自己的设计意图,而不是写具体如何实现。

► 删除掉注释的代码

git等版本控制已经帮我们记录了代码的变更历史,没必要继续留着过时的代码,注释的代码也会对阅读等造成干扰。

错误处理

► 错误处理很重要,但他不能搞乱代码逻辑

错误处理应该集中在同一层处理,并且错误处理的函数最好不包含其他的业务逻辑代码,只需要处理错误信息即可。

► 抛出异常时提供足够多的环境和说明,方便排查问题

异常抛出时最好将执行的类名,关键数据,环境信息等均抛出,此时自定义的异常类就派上用场了,通过统一的一层处理异常,可以方便快速地定位到问题。

► 特例模型可消除异常控制或者 null 判断

大多数的异常都是来源于NPE,有时候这个可以通过 Null Object 来消除掉。

► 尽量不要返回 null ,不要传 null 参数

不返回 null 和不传 null 也是为了尽量降低 NPE 的可能性。

如何判断不是好的代码

讨论了好代码的必要条件,我们再来看看好代码的否定条件:什么不是好的代码。Kent Beck 使用味道来形容重构的时机,我认为当代码有坏味道的时候,也代表了其并不是好的代码。

代码的坏味道

► 重复

重复可能是软件中一切邪恶的根源。—— Robert C.Martin

Martin Fowler 也认为坏味道中首当其冲的就是重复代码。

很多时候,当我们消除了重复代码之后,发现代码就已经比原来整洁多了。

► 函数过长、类过大、参数过长

过长的函数解释能力、共享能力、选择能力都较差,也不易维护。

过大的类代表了类做了很多事情,也常常有过多的重复代码。

参数过长,不易理解,调用时也容易出错。

► 发散式变化、霰弹式修改、依恋情结

如果一个类不是单一职责的,则不同的变化可能都需要修改这个类,说明存在发散式变化,应考虑将不同的变化分离开。

如果某个变化需要修改多个类的方法,则说明存在霰弹式修改,应考虑将这些需要修改的方法放入同一个类。

如果函数对于某个类的兴趣高于了自己所处的类,说明存在依恋情结,应考虑将函数转移到他应有的类中。

► 数据泥团

有时候会发现三四个相同的字段,在多个类和函数中均出现,这时候说明有必要给这一组字段建立一个类,将其封装起来。

► 过多的 if...else 或者使用 switch

过多的 if...else 或者 switch ,都应该考虑用多态来替换掉。甚至有些人认为除个别情况外,代码中就不应该存在 if...else 。

总结

本文首先一句话概括了我认为的好代码的必要条件:整洁,接着具体分析了整洁代码的特点,又分析了好代码的否定条件:什么样的代码不是好的代码。仅是本人的一些见解,希望对各位以后的编程有些许的帮助。

我认为仅仅编写出可运行的代码是远远不够的,还要时刻注意代码的整洁度,留下一些漂亮的代码,希望写的代码都能保留并运行 102 年!

后续增加一些实际的例子来说明好的和坏的代码;分享下如何编写整洁代码——自己认为有用的一些编程技巧。

momia1是什么软件?

momia 1是一款专业的PHP ide编辑代码工具的软件,momia1这款软件具有跨平台运行,拥有对PHP支持refactor功能,自动生成PHPdoc的注释,非常方便进行大型编程,内置支持zencode,生成类的继承关系图,可以通过这个功能查看所有关系等等。

有哪些网站可以查看行业数据?

数据分析,数据是根本。首先,我们要保证拿到的是可靠、真实的数据,然后再把这些数据分析基础运用到实际的工作业务中,好好理解业务逻辑,真正用数据分析驱动网站运营、业务管理,发挥数据的价值。所以今天给大家整理一些 关于获取行业数据的网站。

awesome-public-datasets

(https://github.com/awesomedata/awesome-public-datasets)

这个网站我之前就推荐过,这是一个GitHub大神整理的非常全面的数据获取渠道,包含各个细分领域的数据库资源。领域科研研究,从这里开始。

涉及的领域也很全面包括:农业、生物学、气候、计算机网络、数据科学、地球科学、经济学、教育、能源、金融学、GIS、图像处理、机器学习、自然语言、神经科学、物理学、心理学、社会科学....

oh,看到英语也不用害怕,谷歌浏览器,你值得拥有。

Wind

(http://www.wind.com.cn/)

很多人知道艾瑞咨询,却不知道万得数据。艾瑞多是互联网资讯数据,而万得则有全面的金融数据,类目更新快,在金融业备受青睐。

笔者亦梧【微信公众号:邹亦梧】01年入市,至今已有十多年了。集结了一批"民间股神",在一起潜心研究股票多年,终有所获,总结出了一套选底部启动牛股的方法,深受股民喜爱,很多朋友学会后,抓住了不少涨停牛股。特别是很多新手股民都是经常抓到大涨股票。

国发股份,此股可以看到,股价下跌至底部,股价开始出现企稳,主力资金大幅度进场,本人及时发文讲解,截止目前也是收获36个点!在当天看过文章讲解的新股民都是抓到了这波的收益。恭喜抓住的粉丝!

赛象科技,我们可以看到该股股价前期也是一直在横盘震荡,从底部启动之后,小幅拉升徘徊,在20号成功站稳支撑线后进入拉升,到目前也是短短的4个周期,就收获了46个点的利润,选股不难,难在你愿不愿意踏出学习的那一步!

【潜力黑马】

今天,本人再次用此法,选出了一只底部启动的股票,前面的机会错过的朋友,希望这次不要再错过了,我们看此股的走势图:

从上图可以看到此股的走势是不是很符合本人的选思路呢!都是经过一段时间下跌洗盘回踩底部支撑后企稳拉升,目前该股也是再次下跌回踩支撑线附近,相信讲到这里大家都清楚了,该股后期走势,就不在这里多点评了!

本人在定期跟踪研究很久的几只类似华控赛格、深赛格的股票已经选出来,有兴趣的朋友,可以自行去关注【微信公众号:邹亦梧】查看,最后,如果手中有个股被套,不知道如何解套,买卖点把握不好的朋友,都可以与笔者取得联系,本人看到后,必当鼎力相助!

亦梧微信公众号:【邹亦梧】

Java程序员如何提升自己?

我是胡子哥,结合我的经验我从以下三个方面回答你确定自己的职业规划和未来发展方向如何提升自己网站推荐一、确定自己的职业规划和未来发展方向为什么要确定自己的职业规划和未来发展方向?如果你没有明确的发展目标,对于未来需要掌握的技能也不会有明确的规划,就像瞎子走路一样,你会很迷茫,会产生焦虑感。虽然你可能可以到达一定程度的目标,但是这个过程的时间成本是巨大了,而且进步是最慢的。其实对于个人的定位发展和企业定位发展是类似的,从战略规划—目标分解—执行—结果反馈—优化每一个环节都不可少。一步错步步错,到了一定的年龄就失去核心竞争力,届时得不偿失。在我们走向远方的路上一定要停下了深度思考,如果你觉得你很勤奋努力,但是没有深度的思考,你的方向就会有缺失,从而迷失了方向。深度思考是保障你向正确的方向发展,勤奋努力是保障你把正确方向相关联的任务执行到位,从而达到你想要的预期目标。比如你是Java程序员,你未来可以是架构师、可以是研发总监、可以是CTO、可以是产品经理、可以是产品总监、可以产品VP等。你有了规划和目标,结合你自身目前的情况找差距,你会很清楚的了解自己如何到达目的地。二、如何提升自己上面我们说到要确定自己的职业规划和未来发展方向,希望你读到这里的时候已经有了大概的方向感。那首先祝贺你,你离你要实现目标的距离不远啦。做为一名Java程序员工,如何提升自己的技能,你可以从以下方面做起,希望能帮到你。熟读和深度学习源码的相关知识你可能会问,我已经会用了为什么还要这么做。 源码涉及的知识要点还是非常广泛深入的。你会用很好,你还要学习的是里面如何实现,以及架构涉及的设计模式。里面的架构和实现是非常优美的,比如有线程安全的,也有线程不安全的,哪些适用于并发设计,哪些不适合,如果你不熟悉,你的代码可能会一团糟。熟读和深度学习源码的相关知识对于未来实现中间件架构、业务架构、代码优化、原有组件扩展都会有很大的帮助,这也是未来发展的基础。你可能会问要读哪些代码,比如JavaSdk,Spring,SpringBoot,Mybatis等,JavaSdk是最基础也是最重要的。掌握架构设计思维与应用架构设计思维和你的职业规划也是一个道理,没有掌握架构设计思维的人会永远停留初级阶段。架构设计为业务服务,是为了让服务扩展性、稳定性、可靠性等有良好的支撑,服务走的更远,支持更多业务的开展。整个系统得不到合理的架构设计规划,随着业务的增长,在不远的将来系统就会变的臃肿,维护性差,冗余不可复用,Bug多,运行过程可能会导致系统崩溃。如何掌握架构设计的思维,给你推荐几本书,架构之美、UML和模式应用、面向模式的软件架构 (一共5卷,每卷都值得读,分别是模式系统(卷1),并发和联网对象模式(卷2),资源管理模式(卷3),分布式计算的模式语言(卷4),模式与模式语言(卷5))、重构、代码大全。以下是分布式架构、微服务架构、性能优化的相关知识点汇总希望能给你带来更多方向和收获,如图。掌握项目管理和开发工具当你处于一个产品或者项目团队中,掌握项目管理的技能很有必要,产品或项目开发是一个相对复杂的过程,涉及产品需求对接、UI、架构设计、开发测试、发布等流程。对于如何建立沟通技能、优先级安排,开发进度安排、问题如何协调解决、激活战斗力也变的很重。可以推荐一本书人月神话。目前很多公司都采用敏捷开发,可以深入学习了解下。现在团队高效协作离不开工具的支持,需要掌握配置和使用技能。比如Maven、Gradle、Jenkins、Sonar、Git、Jira等建议坚持写技术Blog

作为一个理工科的程序员来讲,可能不愿意去写作。建议养成写作的习惯,真的很好,知识的沉淀需要有一个承载的地方,它可以帮助你进一步思考和总结,对于代码实现、架构、技术问题的解决能力都会有一个质的飞跃。当你回头看的时候,你发现写Blog真是一件好事情,非常有价值。

三、网站推荐

Github有很多开源的好项目,作为拿来主义肯定省时省力,但对于你练好内功完全不适用。所以说只靠Github完全不够用。可以学习的网站还有CDSN,stackoverflow,iteye(javaeye),infoq,ifeve(并发编程)等向你推荐下。

就回答到这里吧,希望能帮到你,觉得不错的话请给个赞或评论,您的助力都是激励我前行的动力,感谢?!

没有经历大流量和高并发项目的机会?

感谢邀约,提高技术不光是要掌握大流量和高并发相关的经验,想成为一名高级程序员,需要提升的地方很多,比如以下方面:

1、多阅读PHP官方手册和优秀的源代码

其实不需要买太多的书籍,多看官方文档就行,官方材料讲的一般很详细,每次看都会有不同的理解。还有一点我一直认为,看优秀的源代码是提升自己的最快的方式,比如学习优秀程序员是如何编写函数处理业务逻辑的,常用类的封装思路,开阔自己的视野理清自己的思路,看多了,碰到类似的问题,你就会很快的进行运用,技术提升的过程就是一个潜移默化的过程,急不来。

2、学习模块化的编程思路

高手编写代码,一般都是非常清晰规范的,模块化的思路让我们更清楚项目的结构,方便我们进行集成、复用及调用。

3、编码规范

你可能觉得这没什么,但是代码命名的规范、可读性、一些常用的开发规则掌握好并不是那么容易,你可以多看看高级开发人员的代码,这一方面,他们很优秀。

4、代码的可移植性复用性

平常要注意代码的积累和复用性,你不能只开发一个项目,你还要考虑到你的代码能够快速复用到其它的项目中,加速项目的开发。

5、深入理解代码的安全性

我们一定要加强代码安全性的意识,对于我们开发人员,一定要保障网站的安全性,比如跨站脚本、跨站伪请求、代码注入漏洞、字符串编码漏洞等,高级开发人员一般会很注重这块,在互联网时代,我们格外重视产品的安全性和用户账户安全性。

6、代码注释可读性要加强

好的注释,加强了代码的可读性,让其他的开发小伙伴们可以清楚的知道该变量和函数是做什么的,在团队开发项目维护十分重要。

7、以上基础学好后,要学习Linux、Nginx的常用配置

学会使用Shell脚本来完成自动化相关的工作,进行文本处理和数据处理等工作。熟练掌握在Linux环境下安装类似这些 MongoDB/Redis/Sphinx/Luncene/SVN 基础工具。同时了解基本的Linux服务,查看Linux的性能指标数据,知道基本的Linux下面的问题跟踪等。

8、深入熟练掌握一个PHP框架

如今最热门的框架莫过于国外开发的laravel,很牛掰的一个框架,用起来十分方便,国人的thinkphp也很不错,如果初学的话,建议先学thinkphp。

9、深入学习MySQL/MongoDB及缓存

系统开发自然少不了数据库和缓存,在MySQL开发方面,掌握很多小技巧,包括常规SQL优化(group by/order by/rand优化等);除了能够搭建MySQL,还能够冷热备份MySQL数据,还知道影响innodb/myisam性能的配置选项,这方面的内容还比较多就不一一罗列了。掌握完MySQL后建议再去了解下MongoDB,了解下非关系数据库的应用场景。

在大部分系统中,一定会涉及到缓存的处理,所以一定要了解缓存,知道Memcached和Redis的差异和运用场景,能够独立安装这些缓存。需要知道 Memcahed 的一些基本特性和限制,Redis了解基本工作原理和使用,了解常规的数据类型,知道什么场景应用什么类型等等。

小节

先聊到这些吧,总之不在大公司,你也要沉下心来把基础学好,努力提升自己,除了以上方面,还有些我没提及到的比如前端的学习,其他领域语言的学习,数据结构算法方面的深入学习,系统架构等方面比如微服务、云计算,总之要不断的自我驱动进行学习,日积月累,一定会有所提升的。

感谢大家阅读,如果你有什么好的想法欢迎到留言区分享交流,如果你赞同我的回答,欢迎给个赞和转发,谢谢支持。

本文转载自互联网,如有侵权,联系删除