如何判断一个程序员写代码好与不好?
作为一名从事互联网行业多年的老程序员,我来回答一下这个问题。
在我看来程序员代码的好坏标准也与计算机行业的发展有密切的关系,早期的程序员非常注重代码的执行效率,比如时间复杂度和空间复杂度等,当前的程序员对代码的可读性和规范性也非常重视,因为目前的软件开发都是团队行为,团队合作一定要有规范性的代码要求。
我目前对团队程序员的代码要求主要集中在以下几点:
第一,代码的规范性。所谓代码的规范性指的就是代码的模块清晰、可读性强、格式良好、命名合理、注解详细。代码的好坏第一眼是模块划分是否清晰,然后是格式,再然后是逻辑是否清晰。如果这段代码执行的结果是正确的,但是逻辑混乱,这样的代码就不是好的代码,这也是很多初级程序员经常犯的错误,如果不及时指正,对他未来的发展会非常不利。
第二,代码的执行效率。代码的执行效率往往体现了一名程序员的能力,不同的代码在执行效率上差距非常大。代码的执行效率涉及到时间复杂度、空间复杂度,对算法的选择和实现思路决定了程序的执行效率。有经验的老程序员往往在执行效率上有多套完整的解决方案,这是年轻程序员需要重点学习和提高的地方。
第三,代码的扩展性。代码的扩展性主要体现在代码结构的设计上,运用规范的模式能够在很大程度上保证代码的扩展性。程序没有不修改的,修改就涉及到功能的扩展,而好的代码在功能扩展上就比较方便。比如在完成一个简单的数据存取功能的时候,程序员会按照实体类、接口、实现类、工厂类的结构来设计,这样以后的扩展会非常简单。
最后,不同的开发团队往往有不同的规范要求,程序员一定要仔细学习并掌握,这对以后的团队合作非常重要。作为软件团队的一份子,一定要记住不要犯低级错误!
我带软件团队多年,我会陆续在头条上分享一些开发方面的科普文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。
如果有开发方面的问题,或者是考研方面的问题,都可以咨询我。
谢谢!
程序员写的代码质量好坏可以从两个角度入手
1.好的代码一般通俗易懂
高手总会化繁为简,写的代码首先是能让人看懂,谷歌苹果的工程师代码提交之前都会找上周围的同时给看一遍,如果对方觉得没有什么问题可以直接提交,并且在提交注释里面写上reviewer名字,这样同时也把责任给担起来了,看似一个很简单的模式,却被绝大部分技术公司沿用。
所以代码不能只有自己能看懂,让别人能看懂你的思路,你的设计意图。
2.好的代码,遵守整个系统编码规范,不出格,最重要的一点好的代码能够经得起实践的考验,在实际运转过程中,没有很重大的系统崩溃出现才能称得上好代码
所以代码不能只是看着好,在性能上也需要有不俗的体现,对于程序员来讲代码就是脸面,特别是在团队配合之中,如果一个人写的代码质量高就会给人形成一种靠谱的感觉,在配合过程中也比较容易形成默契的感觉,一看谁写的代码如果平时代码质量高,大家在调用该模块的时候会觉得很舒心,很放心。代码直接关系着程序员的品质问题了,有很多老程序员对于代码质量非常关注,不允许自己犯一些很低级的错误,导致自己的名誉受损。
那么在没有明说初级程序员、高级、资深,还有具体技术定向的情况下,提问者应该就是问的针对编程这项工作而言,具有普遍通用的评判标准:下面就来列几条具有普遍适应性的评判标准:
1、代码注释:这一点是很简单的一点、也是适用性很强的一点;无论是个人编程还是公司业务、核心技术研发、科研等等类型的项目都需要,好的注释会使得代码可读性强,易于代码的交接、复用。
2、命名规范:命名规范,有文档的、项目的、***文件的、类的、函数的、变量、常量等等,之所以放到第二位是因为,适用于代码的好的命名规范,一般具有唯一性(不会产生歧义),专业性、简洁性等特点,能让项目代码协同工作人员一眼读懂其所代表的含义,在相同作用域下不会与类似作用功能的函数、变量等,产生命名冲突和歧义。
3、编程风格:编程风格大公司一般都会有具体要求,其中命名规范也是其中一点;拆开讲是为了内容简洁;简单讲几点:1、代码对齐格式 2、函数{}的使用,代码段的设置 3、字符串、sql语句的[_a***_]规范 4、返回值,函数类型(这个放进来比较勉强)5、如果再往大了说,文件组织等(偏向于架构风格)
4、代码性能:也可以说是代码执行效率;这个就得视具体项目及应用环境的限制了,主要还是看在空间利用率和时间执行效率上的性价比。
5、耦合性:特别是业务型的项目很注重,现在普遍***用微服务的架构模式,主要也是为了满足低耦合的要求;代码耦合性高,会造成可维护性特别差!包括对代码的业务/功能拓展,性能优化、重构等等。
理论上讲,好的代码要简洁,逻辑清晰,易扩展,良好的封装等等。
但在实际中,吐槽代码已成了程序员的日常。
借用亚马逊工程师的话,来形容说他们的代码:“一座很大的屎山,你见过的最大的山,每次你想修正一个bug,你的工作就是爬到屎山的正中心去”。
我们组曾有一个著名的6000行后端JS,没有面向对象封装,纯靠函数。 其中有好几个上千行的函数,带了二十多个形参,几个标志位,分别有十几个数字状态。注释?没有的。
每一个接手过这段代码的人都会不约而同的发一条朋友圈以示佩服。
但神奇的是,代码在执行上基本没太多的错。
直到几个月前,一个大牛在走之前把这段代码全部重写了一遍,留下了至今都没有改完的bug。
就说几个自己感触最深的吧,新手同学务必看过来!
前人血和泪的经验教训!!!
第一,代码简洁易懂
极其重要的第一原则,必须重视。刚入程序员坑的时候,觉得秀各种奇淫巧计很高端大气上档次,现在回头看,只觉得自己Too yong, Too simple。大道至简,代码是写给人看的,庞大成熟的工程项目中,绝不会只依赖一个程序员,简洁易懂是大家协作的基础
第二,足够清晰,足够简洁的注释信息
不要不写注释,因为别人真的不知道你咋想的;不要写一大堆没用的注释,因为别人看的头会痛。
标准原则是,关键地方,关键定义或者调用,写清楚注释;代码,变量函数的定义清晰明,代码本身也是注释。这样看是不是和第一条有重合,保证你的代码简洁易懂。
java培训班出来的大多什么水平?
刚开始干活磕磕碰碰,过三个月基本可以胜任工作,但是很多人就停留在这个层面了,我也不太清楚具体是怎么回事,培养成本比较高。有一部分可以挑大梁,遇到棘手问题时仍解决不了。工作三五年了Java虚拟机参数调整还不能自己解决,oom就更解决不了。会设计数据库,但是自增ID问题考虑不周,导致出现ID冲突。总结就是,我肯定他们的能力和态度,但是培训班出来的,细节处理,代码规范,文档意识,安全意识,操作系统知识,解决复杂问题的能力,都或多或少有点欠缺。多数沉不下心去读书,比如core JAVA这本书。补充一下,我发现培训班出来的都喜欢看视频教程,跟着学。***教程都是面对初学者的,所以提升不上去跟这个应该有一定的关系。***教程不可能面面俱到,只讲重点,忽略了很多东西。这些被忽略的东西,工作中却要用到。
我有一个同事培训的在我公司拿到了10k的,offer,大专学历,我也不知道是谁给通过面试的(吃饭聊天有透露)
结果工作的能力真的是半桶水。培训出来大多是半桶水,开发环境装了三天,因为没任务,所以就没管他了,一般培训出来都是去外包工作。薪水大概是6~10k,我身边就有一个同事是从培训出来的。能力我是真的看不下去了。
虽然工作能力不行,但是还不是从一开始的懵懂无知到老油条,都是出来打工的,所以你也别为难谁了?能帮就帮吧!希望每一个培训出来的都能够找到工作,加油!!!
我是15年毕业,计算机本专业毕业的,到现在工作了也快7年了吧,也换了很多公司,遇到过各种各样的同事,也面试过很多人。
我举个例子吧,我面试别人的时候喜欢问一些很简单的问题,比如什么叫并发什么叫并行?因为计算机本专业的人专业课中有一门叫做计算机操作系统,开头的几章里面就明确说明白了这个问题,但是培训班出来的基本答不上来。
培训班出来的人更喜欢写一些工具性的东西,比如学了什么语言,用了什么软件,有哪些三方库,从来不写熟悉,计算机网络这种。
近几年因为负责部门开发人员招聘,所以接触了大量的培训机构出来的学生。就像人分为三六九等一样,从培训机构出来的人就在机构里学习的内容本身而言,也是分为三六九等的。
我先拿水平还可以,基本能过技术面这关的人来说吧。这些人只能说对学习内容掌握的还可以,对SpringMVC、SSM等主流的J***a端框架有了基本的认识,可以独立完成开发环境的搭建和开发,同时会用JQuery一些最基本的前端数据交互开发。
如果再问一些培训范围外的技术点,自主性较强的人可以大概说出个一二来。如果全靠老师教,基本只能回答清楚培训内容以内的东西了。
因为软件开发中,编程语言的基本用法只占到了大约1/3的内容,剩下的技能主要靠罗辑思维能力、技术转化能力和问题解决能力了(当然还需要其他一些能力)。所以,想要编程编的好,是需要时间以及经验去积累的。
综上所述,不要指望培训班出来能有多高的水平,只能算被讲师领进门了,不用看着J***a一直发懵了。想要成为大牛还得依靠长期不断地自主学习以及积累。