A. 程序员写程序时经常出错吗我刚学c,写的100行左右代码就有好几个问题上万行的代码那是怎么写的啊
呵呵、、、出错很正常啊!你刚开始学习,不要太把错误放在心上,重要是解决错误的办法和过程。至于那上万行的代码,大型程序都是模块化编写的,不是一c文件。那是要分成若干c文件,不能c文件中放着不同的函数(对应相应的功能),单个c文件编译容易发现错误。最后将所有的c文件整体编译。就这样!!模块化编程思想!!
B. 程序员如何写出更好的程序代码
Martin Thompson是java Champion称号获得者,同时也是一名高性能计算科学家。他说,为了写出更好的代码,程序员需要运用基本设计原则,阅读已有代码。在QCon London 2016大会上,他做了题为“挖掘你的工程师属性(Engineering You)”的演讲。InfoQ在会后采访了他,内容涉及软件行业面临的挑战及程序员如何应对那些挑战成为更好的软件工程师。
软件开发面临的其中一个最大的挑战就是处理应用程序规模增长带来的复杂性。对象、组件、模块或系统之间的耦合程度越高,我们需要承担的后果就越多。这些后果包括但不限于修改困难、故障蔓延、由于争用而无法扩展、由于关联操作而导致的性能问题。时间、空间和实现上的松耦合对于扩展性和弹性而言至关重要。“共生性(Connascence)”可以很好地描述耦合,一个模块/组件的变化会导致另一个模块/组件的变化。
我发现,内聚比耦合更微妙。我喜欢将内聚理解为统一性。当我们考虑在不同的方面使用同一个组件时,就失去了统一性,这会导致不必要的行为和特征。软件设计中的低内聚常常是一个很好的需求或团队状况指标。通常,内聚设计很容易跟踪,由于相关的函数和特性都进行了分组,相互关联,所以可发现性很高。
如果我们希望成为更好的软件工程师,那么提高我们运用基本设计原则的技能应该成为我们日常活动的核心。在训练和实践中不断重复是让技能成为第二天性的最好方法。
C. 如何提升程序员的代码编写能力
一、先列三个常见的开发场景:
1、拿到一个模块详细设计文档,大部分程序员的通常做法就是开始搭建界面代码,然后从第一个按钮点击事件或页面Load事件开始写第一行业务代码。写的差不多了,就运行一下,发现哪里不是自己想的那样,就改改,直到改到是自己预想的那样。
2、做完了一个功能模块或几块相关联的功能模块,输入111asd,发现新建正常、保存正常,就提交给测试人员。测试员用测试用数据、测试场景用例来测试,发现有问题,就登记bug。对于严重的影响下一步测试的BUG,测试员就用内部IM通知这个开发人员。对于不影响继续往下测试的BUG,测试员就登记下来,等程序员有空时处理。
3、程序员一般工作不希望大家打扰,所以开发起来就是开发。等手头开发告一段落,就看看BUG库。发现有与自己有关的BUG,就从第一个BUG开始看起。就开始通过IM和测试员掰扯起来(这不是个BUG啊、业务逻辑不是你想的那样啊、我这里不能重现啊、你给的信息描述不清晰啊),于是IM几来几往,甚至跑过去当面交流一番,甚至会拉扯上产品经理一起讨论,更甚者需要项目经理或产品经理发起一个会议来集体讨论一下
这是不是很熟悉呢?这就是大部分程序员开发的三个步骤:写代码、自测、修复BUG。
二、说好的代码设计、代码测试呢?
代码设计?那不是都有开发平台么,已经固化了啊。那不是维护旧功能做完善修改呢么,又不是写新代码,只能在现有代码基础上修改啊,你又不能大幅重构。
代码测试?你丫需求讨论期、产品设计期、设计评审期那么长,都把研发项目时间占光了,就留下2个星期让我们写代码,我们哪里有时间搞那么深的测试。还想让我们搞结对编程?还想让我们搞测试驱动开发?
而且你看测试,什么功能测试、集成测试、性能测试、安全测试、安装部署测试、升级测试、迁移测试、UAT测试,一大堆测试,测试也需要很多时间。
一个项目,需求讨论、产品范围规划与评审、产品设计与设计评审占了一个半月,开发+自测就一个月,测试占了一个半月,这就4个月了啊。
三、为啥程序员写代码总是写写测测?
刚才大家也都看到了,大部分程序员都是从界面代码开始写起,而且写一写,就运行一下看看。为什么会是这种开发方式?
那是因为大部分程序员缺乏在脑子中的整体建模能力。只能做出来一点,真实的感觉一下,然后再往下。
有些是产品经理的上游就有问题,没给出业务流程图(因为产品经理也没做过业务),也没画清楚产品功能操作流程图。
为啥没给出业务流程图?因为产品经理不熟悉业务,另外,产品经理也没有流程建模能力啊。为啥没画清楚产品功能操作流程图啊?因为不会清晰表达流程啊。
很多产品经理、程序员,都缺乏分类、分层、相关、先后能力,更别说总结、洞察能力。
这是基本训练,是一个做事头脑清醒的人必备的技能,这不是一个程序员或产品经理或测试员的特定技能要求。
我经常看书就梳理书的脉络,每看一本就写一篇总结。我过去闲扯淡还梳理过水浒传、红楼梦的人物关系图呢,其实就在事事上训练自己的关联性、层次性、洞察性。
我经常面试一个人时,我会问这样的问题:“你把我刚才说的话复述一遍,另外你再回答一下我为什么会这样?”,其实,我就在看一个人的细心记忆、完整梳理、重现能力,我也在看一个人的梳理、总结、洞察能力。
我个人写代码就喜欢先理解业务流,然后理解数据表关系,然后理解产品功能操作流,大致对功能为何这样设计、功能这样操作会取什么表、插入或更新哪些表,哪些表的状态字段是关键。
然后我写代码的时候,就根据我所理解的业务流、功能操作流、数据输入输出流,定义函数,定义函数的输入与输出。
然后,我会给函数的输入值,赋上一些固定值,跑下来看看能否跑通这几个关联函数,看看还需要怎样的新增函数,或者看看函数的输入输出参数是否满足跑通。
剩下的事,就是我填肉写详细逻辑代码了。
当然,大部分人没我这样的逻辑建模能力。怎么阅读理解也想象不出来,也没法定义函数。毕竟有逻辑建模能力的程序员都很少,100个人里有10个,已经是求爷爷告奶奶好幸运了。
那怎么办呢?
我建议是分离分工配合,这就是现实中没办法的办法。让有逻辑建模能力的人来设计函数框架、来设计工具来设计代码模板,然后让没有逻辑建模能力的人来填肉写详细逻辑代码。
我们可以先从最紧要的模块开始这么做。不紧要的模块,还让它放任自流,让熟练手程序员继续涂抹。
我曾经还让有头脑的程序员做榜样,给大家分享他是怎么规划函数的,怎么做维护性代码的代码结构改善的。但是发现效果并不佳,其他人并没有因此能做代码设计。可能逻辑建模能力是个人的基本素质,是从小到大训练成型的,不是你一个大学已经几年的人能够短时间内可以训练的。
所以啊,还是让能走的人先走,让从最紧要的模块开始这么做。
不必担心这样做后,因为过去一件事被分工(一个做代码框架一个填肉)成两个人做了会降低工作效率。我们很多的工作效率低就是因为半瓶子醋搞出来的,来回反复修改。
真是应了刘德华在电影里说的那句话:说你又不听,听又听不懂,听懂了又不做,做又做不好,做不好还不服气。
四、为什么大部分程序员不做代码测试或白盒测试或单元测试呢?
还是因为没有代码设计。因为没有函数啊。所以,一个按钮功能有多复杂,代码就有多长。我见过2000行的函数,我也见过1000多行的存储过程和视图SQL。怎么做白盒测试啊,这些代码都粘在一起呢,要测,就得从头到尾都得测。
所以啊,先学会设计函数,先写好函数,这就求爷爷告奶奶了。很多开发了5年的熟练手程序员,可能都未必会写函数。
函数的输入输出值就很有讲究。很多人都写死了,随着版本迭代,发现过去定义的函数参数不够用了,于是就新增了一个参数。然后,相关性异常就爆发了,其他关联的地方忘改了,到底哪些有关联,怎么查啊,本系统没有,没准其他系统就调用你了,你根本不知道哪个神经人曾经COPY过你的代码修吧修吧就改成了他的功能呢,而且里面的很多代码他看不懂也不敢删,只要他实现的功能正常了他也不管了。于是,你改了你这个函数,他的系统就莫名出错了。
所以,我一般会定义几个对象来做参数。另外,我也很注重函数的日志、函数的异常保护、异常抛出、异常返回。另外,我也很注重参数输入值的合法性校验。
所以啊,应该开发Leader们先制定函数编写规范最佳实践,输入输出参数怎么定义比较好,函数的返回值如何定义比较好,函数的日志记录应该怎么写比较好,函数的异常保护、异常抛出、异常返回如何写比较好。先教会一般程序员,先从会写函数开始啊。
当然,你光有一份规范,程序员们还是不理解、不实际应用啊。所以,还得Leader们做好典型的代码模板,里面是符合函数规范的代码框架,只有这样,一般程序员们才会照猫画虎适应了函数设计的编程习惯。
所以啊,我专门重新定义了leader的明确职责,其中第一个重要职责就是:负责工具/框架/模板/规范的制定,并且负责推广且普及应用落地。
你不明确定义Leader的这个重要职责,你不对这个职责做明确的KPI考核,谁尿你啊。你以为好的工具/框架/模板/规范是靠人们的热情、自发产生的么?我们还没有那么自觉高尚啊。
五、为什么大部分程序员不写注释啊?
我经常说一句话,千万别多写注释。为啥?
因为我们经常遇到的问题不是没有注释,而是更糟的是,注释和事实代码逻辑是不相符的。这就出现常见问题了:残存下来的设计文档是一个逻辑、注释是一个逻辑说明、真实代码逻辑又是一个,钟表多了,你也不知道正确时间了。
所以啊,产品文档、注释、真实代码,三者总是很难一致同步。我为了几百人研发团队能做到这个同步花了大量心血和办法,但我最终也没解决了这个问题,还把Leader们、总监们、我都搞的精疲力尽。
索性回归到一切一切的本源,代码,就是程序员的唯一产出,是最有效的产出。那么,让代码写的不用注释也能看懂,咱得奔着这个目的走啊。
为啥看不懂,不就是意大利面条式代码么,又长又互相交杂。
OK,我就规定了,每个函数不能超过50行。用这一个简单规定和静态代码检查插件,来逼迫大家尝试着写函数。有的函数属于流程函数,是串起其他函数的,有的函数就是详细实现函数,实现一个且唯一一个明确作用的。
有了流程函数和功能函数,而且每个函数不超过50行,这就比过去容易看懂了。
六、为什么大部分程序员不抽象公共函数啊?
我经常说一句话:千万别抽象公共函数啊。为啥?
因为大部分程序员缺乏抽象洞察能力。特别是有些积极热情有余、爱学习爱看书、半瓶子醋晃悠的二杆子,看了几本UML、重构、设计模式、整洁代码之道,就跃跃欲试了,还真敢给你抽象公共函数了。
一开始,他觉得80%相似,20%不相似,于是在公共函数里面简单写几个if..else做个区隔就可以。没想到,越随着版本迭代,这些功能渐渐越变越不一样了,但是这个代码已经几经人手了,而且这是一个公共函数,谁也不知道牵扯多少,所以谁也不敢大改,发现问题了就加一个if..else判断。
没想到啊没想到,这个本来当初公共的函数,现在变成了系统最大的毒瘤,最复杂的地方,谁也不敢动,除非实在万不得已,手起刀落。
所以,我平时告诫程序员,纯技术的、纯通用的,你们可以尝试搞搞抽象公共函数,对于业务的,你们还是简单粗暴的根据Leader们做的代码模板代码框架,乖乖的复制、修改、填肉吧。
你们啊,先从做模板做代码片段开始吧,咱们放到咱们内部代码片段开源库里,看谁的代码片段被别人复制的多,说明你的代码抽象设计能力越好了。那时候,我就大胆放心让你撒丫子跑了。在没有学会跑之前,给老子乖乖的复制、修改、填肉吧。
D. 程序员如何写出干净的代码
1编写可读的代码
最简单的方法是使用空格,在发布代码之前,可以缩减代码,但是没有必要让代码看起来很小型化。
相反,可以使用缩进、换行和空行等方式,使代码结构更具可读性。代码可读性和可理解性就会提高,当然更容易理解。
2为变量、函数和方法使用有意义的名称
“有意义的名称”是指描述性足够的名字,而不仅仅是编写自己才能理解的,换句话说,名称本身应该根据变量、函数或方法的内容和使用方式来定义。
需要注意的是,使用描述性名称并不是说就可以随意使用任意多个字符。比较好的办法是将名字限制在3或4个单词。
如果需要使用超过4个单词,说明这个函数或方法需要同时执行多个的任务,所以应该简化代码,只使用必要的字符。
3让一个函数或方法只执行一个任务
让每个函数或方法只执行一个任务,如此一来,别人能够很轻松的理解这些代码。
如果你很难找到函数和方法的描述性名称,或者需要编写冗长的指令以便其他人可以使用,那请考虑这个建议,让每个函数或方法只执行一个任务。
这种让每一个函数或方法只执行一项任务的做法被称为保持纯函数。这种编码实践来自于函数式编程的概念。
4更容易遵循编码模式
我们应该只在必要的时候使用注释,而不是解释糟糕的代码。编写无穷无尽的注释将无助于将糟糕的代码转换成干净的代码。
如果代码不好,应该通过改进代码来解决这个问题,而不是添加一些如何使用它的说明。编写干净的代码更重要。
5保持代码风格一致性
最好的方法是选择一套编码方式,然后在所有的项目中坚持使用。
如此一来,即使中间做了其他项目,再回到之前项目的时候也会更容易上手。
当然,尝试新的编码方式是一件好事,它可以帮助我们找到更好的方法来开展工作。但是最好是在不同的实验项目或练习上尝试不同的编码风格,而不是在主要项目上进行。
6经常自我检查代码
我们应该定期检查代码,并试着改进它。如果想让代码保持最佳状态,就需要定期更新它们。
如果不审查和更新我们的旧代码,它很快就会过时,就像我们的设备一样。
E. 程序员进来,笔试中写代码,应该写哪里的代码顺便指点一下以后的路
兄弟,首先说笔试中写代码,应该写哪里的代码?这个问题要看题意了,要看人家想考你页面知识水平还是想考你后台知识水平,要把握题意。一般情况下,笔试中的打码一部分是基础常规知识考查,就是知识点之类的,一般与项目无关。另一部分是与项目有关的,比如一个项目模型,实现简单典型功能。关于数据库的,笔试我我认为一般是考后台数据处理的,而不应该写页面代码,虽然页面也能和数据库交互,这是分工分层问题,数据库就用后台代码处理,页面主要任务就是表现显示。
关于以后的路,兄弟既然是学软件的,刚毕业,我建议还是坚持走这条路,最起码前几年或者是没有发现更好方向之前,要好好钻研软件道路上的相关理论和知识,在工作中加强实践。这条路干好了还是比较不错的,尽管有时有些累。
毕竟刚毕业,遇到些挫折是正常的。
建议兄弟在工作的过程中,抽时间学习一下相关的软件知识,以及其他开发语言,比如流行的java,jsp等等,知识范围不要过于局限。将来有条件了也可以参加些职业培训,大有好处。
如果兄弟现在身上没钱,一时半会有不好找到工作,那建议可以先扩大就业范围,保安啦,服务生啦,先干个一段时间,稍微攒点钱,缓解一下压力,有点资本,再专心找工作。但是此过程中注意学习。
你可以在网络搜 “段小磊”,不管有没有夸张成分,但是可以是个例子。
可以看出兄弟是个想自立的人,不想向家里要钱。好样的。万不得已,还是要向家里要些,先让自己过得去。
祝兄弟好运!
F. 刚毕业做程序员,每天都是写代码,感觉有点枯燥,听说有个程序员鼓励师的活动,不知道该怎么参与呢
其实你现在不是想做程序员的问题,而是处于一个反思期,你现在在反思着,这么多年了浪费了大量的时间,后悔,想重新努力,其实做什么不要紧,只自己觉得目标正确,并在过程中获得自我认可就行了。
不管你想做什么,有一条是要紧的,积极向上的心态,如果你实在不知道怎么行动,那就先健身,先完成一个小小的,近期的目标,让信心恢复。信心很重要。有了这个,你做什么都会有自信的感觉。
G. 程序代码怎么编写
编写需要学习编程语言,例如c语言,java等。
1、有基础的学员:对于没有任何编程基础的初学者来说,要想快速入门编程,最为有效的方式之一就是与专业人士进行交流,在专业人士的指导下进行学习会有比较高的学习效率,而且也会有一个系统的学习过程,当前可以充分利用互联网来开辟自己的交流渠道。
2、无基础的学员:对于已经有一定编程基础的同学来说,边用边学往往会有更高的学习效率,比如程序员在学习一门新的编程语言时,如果采用听课的方式学习也许并不是最高效的。
很多程序员是直接看代码案例,然后就开始尝试应用,然后再逐渐提升应用的熟练程度,因为对于已经有成熟编程思想的程序员来说,不同的编程语言仅仅是语法上的不同,思想终归是统一的。
编程语言难易
编程语言的语法并不难掌握,但是要想熟练运用编程语言,一定要多做实验,这个过程是无法忽略的,也没有任何捷径,编程语言用得多了,自然也就熟练了。对于很多应用级程序员来说,编程并没有太多需要思考的地方,也不需要设计复杂的算法。
如果要想在程序设计领域走得更远,熟练运用编程语言仅仅是第一步,还需要有自己的主攻方向,并且能够围绕自己的主攻方向不断深入,掌握相应的研究方法,最终成长为一名研发级程序员。
H. 程序员用c语言写代码到底是怎样的难不难啊举下例!
这个难说了,看你编什么了。不同的语言写的代码会有所差异的,可能用这个语言写这个程序比较简洁,用那个预言写那个程序比较简洁
I. 优秀Java程序员都是怎样写代码的
1.编码之前想一想
用10分钟,20分钟甚至30分钟的时间来想想你需要什么,想想什么样的设计模式适合你将要编码的东西。你会很庆幸“浪费”了那几分钟,当你不得不更改或添加东西到代码中时你就不将将浪费几分钟而是要花费更多的时间。
2.注释你的代码
说真的,没有什么比两个月后检查自己的代码,却不记得它用来干什么更糟糕的了。注释所有重要的内容,当然那些显而易见的就免了吧。
3.写干净的代码
错落有致。使用空格。根据功能模块化你的代码。阅读RobertC.Martin写的《CleanCode》,非常有帮助。此外,遵循代码约定/标准(如,尤其如果是共享的代码。
4.重构
没有人喜欢用那些超级长的方法。这通常(几乎总是)意味着你混杂了功能。用更易于管理的方法分离代码。还能使得代码更可重用。
5.不要复制粘贴代码
如果你有两个或两个以上相同的代码块,那么你可能做错了什么。阅读第4条。
6.使用有意义的名称
虽然命名int变量为“elligent”或char为“mander”是很好笑;但是,这样的名称并不能说明变量是用来做什么的。
7.测试代码
测试,测试,测试,还是测试。测试你的代码。不要等到已经做完程序之后再来测试,否则当你发现一个巨大的bug,却不知道它来自于哪里来的时候,你会追悔莫及。
自动化测试通常都是有价值的。它还有助于节省大量重测试和回归测试的时间。