Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >程序员自我修练-提高写代码的能力

程序员自我修练-提高写代码的能力

作者头像
lyb-geek
发布于 2018-12-07 09:35:41
发布于 2018-12-07 09:35:41
2.2K0
举报
文章被收录于专栏:Linyb极客之路Linyb极客之路

首先让我们看一看刚入软件公司会出现的情况: 1. 你可能会常常发现,写了一段代码后,编译程序时是一大堆的出错 (原因:语法不熟)

──别担心,这是每个程序员必须经历的事,这时候你就需要更大的耐心及细心, 对每一行代码进行仔细人阅读并改正,这个很重要,这可以培养你的理解代码能力,所以要常读程序,不要等到程序运行以后才知道你的程序的结果。 ──如何避免:在写代码以前,要认真的学习计算机语言的语法,如关键点,易错点,易忘点。同时要自已动手写自已的测试代码,而尽量不要抄别人的代码示例。即使抄,在学习阶段也尽量不要每一行一模一样的对着抄。而应对着代码示例写有所不同的例子。 比如:在学java 知识点时,你最好建一个工程把所有的代码都写到这个工程中,以便对照分析学习. 2. 你可能会常常发现,写完一段码后,编译通过,可是运行起来却出来很多逻辑上的错误。(原因:理解错误或逻辑上想错了) ──提高逻辑思维和理解能力 3. 拿到一个需求却不知从那里开始(对系统不太了解) 4. 常常为了一个小小的错误用了很长的时间,不知从那里查,也查不出结果 5. 常常做出来的东西是有了东却少了西(考虑不全) 6. 有时为了一个特殊功能模块的实现查了很工时间却没有查出结果来(备查的资料不全) 7. 有时是否要项目经理叫你做东,你做了完全没有必要的西?(沟通不及时) 8. 有时为了能提前完成某一个任务,加班到深夜,可是到了明天却效率低下,还不如不加班(要注意休息) 9. 有时自已认为已测好了好多次,可以保证不会出错,可是经测试人员一测试却很多错误(不够细心或测试方法有问题) 10. 有时为了避免出错,常常全比写代码的时间超出两倍用于测试(方法有误) 11. 有时写好了一段代码给质量管理人员时却因为代码不够规范而导致重写?(代码不够规范) 为了写好代码(包括,代码没有问题,需求符合,健壮性好,总用时小),那我们应该怎么做呢,有没有什么方法没有. 回答是肯定的!! 可以总结为两大关键点:一是养成好的编程习惯,二是针对自已的工作提高自已的知识含量.

一. 好的编程习惯 1. 写程序前打个草稿可以在心里,最好在纸上:目的要从整体上考虑程序的实现。如果公司采用建模的方式,有建模工具(rose ,visio )那是最好不过的了。 2. 注意休息,不要浪费自已的休息时间,用去了自已的时间不但会写出的代码因为注意力不集中而会常常出现代码的质量有问题,逻辑常出错 3. 要善于收集相关的专业开发上的资料,以便以后能更快更好的解决问题目。提倡公司能提供内部知识勾通的工具(如知识论坛,内部即时聊天器);提倡公司内部有技术资料的共享库,提高解决问题的能力. 4. 提高对所写的模块的相关全局把握能力,在写程序中要最好先详细设计后再发布. 5. 要学会与他人沟通如非工程师,学会沟通的不同方式,提高沟通的效率。

二.不同的目标不同的知识重点(一)目标:程序员 职责:根据详细设计文档,或根据高级程序员的设计进行相关的开发。 1. 要学会看相关的需求文档及详细设计文档。 注意:你必须要通过阅读这些文档把握住其中的重点,关键点,相关易漏点 2. 如果公司里会用UML来相互的沟通,这时你必须要深刻理解UML 的相关知识,一定要注意千万不要对UML图一知半解的情况下,就着写代码,那样会错的很惨。 3.学好对应的计算机语言的基础知识,如:程序的语法,关键点,易错点,对应的出错如何出理,如何才能把对就的程序写的键壮一些 4.如果用到数据库的内容,在学会sql的前提下,尽量学会数据库原理中的相关sql内容, 当然为了提高查询的能力也可以增加一点 5.如果用到面向对像的语言那最好学点相关的设计模式,这样的可以增加代码的扩展性,及可维护性等,能够理解详细设计中的模块间的设计原则这个也可以提高对模块的内容编写的正确性. 6.你一定要学会公司内部的通用的编码规范。 7.学习如何做单元测试比较好.必须要熟悉相关的单元测试工具. 8.要不断的对相关知识进行总结,同时也要必须把相关的资料进行整理和学习,在学习过后的资料中你可以在遇到问题时更快的找到问题的答题。 9.在开发你必须记录下大家常出错的地方及大家的解决方法,这个对你以后错误的避免有很大的作用. 10.在写代码中时必须把上面写过代码记在心里,这样就可以养成习惯,提高代码的速度 11.对数据库操作时,要尽量共用Connection,并小用以减少Connection的数量 (二)目标:高级程序员 职责:对需求文档进行系统相关模块的详细设计,并负责对程序员的支持及指导和相关核心模块的编写 所以不但要学会相关程序员要的知识,同时还要学会难度比较大的知识。 1. 程序员的知识,如设计模式你一定要不是简单的看要懂,你还要应用设计模式对相应的模块进行相关的详细设计。 2. 要学好相关详细设计的工具做的有的放矢,这样可以更好提高对自已的设计的表达 3. 为了提高系统的运行效率会运用到 a. 数据库的表结构如何建才能使应用的要查询sql 更快。这时可要认真认真的学习一样数据库原理,千万不要以为采用数据库的范式越高系统的运行效率会越好,有时候适当的表冗余可以大幅度的提高系统的查询效率. 同时适当的建索引,视图,存储过程也是提高系统对数据库的查询的效率之一。 b. 学习多线程的编程,不过千万不要以为线程数越多运行的速度会越快,一般线程的数量超过一定的数量后,系统的运行速度反而会变慢。为了应用好多线程,操作系统这本书也要关于同步及相关进程和线程的知识必不可少。 c. 设计好的一程序的好的算法,可要比起解一道同一复杂的数学题,要难的多,所以要在学好的相关数学的知识上(如线性代数,离散数学,概率论,数理统计)。更要深入计算方法,及数据结构,让数学问题用计算机来解决。 4. 为了让系统设计的更加的可扩展性,稳定性,设计模式和软件工程可是不能少的东西。所以必须把设计模式用于模式级的设计. 5. 如果公司采用的是Rose (UML)进行设计的话,你对于UML 的理解一定要非常的准确,同时你要跟小组中的程序之间进行充分的UML概念上及对应用例图,类型图,对象图,协作图的意思多写一些注释加深大家对你的设计上的理解。 (三)目标:系统分析员 职责:做好与客户之间的关系,同时对客户的需求要正确的理解,要选择合适的开发技术,同时做好与客户间沟通交流,学会说服对方。 1.学会对客户的沟通:要正确理解客户的需求同时要保证相互之间的沟通顺畅。 2.对了解来的需求要能用笔正确的描述下来,并能很好的传叙给其他人。这时要学会用如ROSE 等的软件建模的工具。和powerdesign等的数据库建模工具。和相关的UML,数据流程图及相关的内容的知识。 3.不但要全面的了解客户的需求而且还要对需求进行未来的可能的改变要有相当多的了解。 4.全面的了解客户的需求后,要选择合适的相关技术用于开发,: 这时要学习各种知识 a.先择数据库:db2,infomix ,oracle ,sql server,mysql 的优缺点,可以从中选择最适合的数据库及理由。 b.设计数据库:要扎实在数据库的理论(数据库原理,数据库系统设计)及相关数据库设计经验,要尽量多的分析过去数据库设计,分析这么设计数据库的好处。这时可能要用到 powerdesign等工具。 c.写需求说明文档和概要设计文档,同时要学会要分析相关需求说明文档的需要的内容的相关知识,如人员工时的计算方法, 一般会用 project 来分析相关的项目的内容。 d.选择合适的程序语言及相关的架构,一般主流的架构是 J2EE和.net的相应的优点及它们之间的结合,如采用soap xml进行相关的结合,或用java-com 桥 进行相关的功能的调用。和它们之间的相关语言优缺点 e.还要根据b/s,c/s 结构对开发的网络影响的相关内容采取选择。 5.学会说服对方,毕竟客户都不是个个是软件专家,他们的选择有时未必是正确的所以学会说服对方,是系统分析员必备的能力条件.

三.训练的方法:1.计划行事: (1.设定你的未来的学习目标 a.未来要成为什么样的人(主要是工作角色,如程序员,高级程序员,系统分析员) b.你近期要成为什么样的人(当前的工作职责是什么,如果只写代码是程序员等) c. 要完成近期的工作所必须的知识(如java基础知识等),关键的知识(如java中 关键要用到的知识有,面向对象等)易错的知识(比较原来的已有知识进行合对) (2.设定你的学习目标后,并要有针对性的对应目标设定学习时间的按排及学习路线。并直观的记录在案,以便以后随时核对, (3.常常抽出一定的时间认真核对计划的完成情况,如果没有按时完成计划的内容。分析原因,尽量想法赶上计划内容如果存认是计划有误,要认真总结计划失败出错的原因,对你的未来有很大的帮助。 注意:不要对计划的按排过于乐观 要尽量的考虑实现中的各种情况,同时适当按排一些缓冲时间,以便真正能按照计划行事,以提高按计划行事信心,同时这能有效避免出现计划中途成没有意义的东西。 2.针对工作角色对自已的能力进行培养和知识进行学习。 关键的能力: (1.记忆能力:要学会把自已的写的代码和改的代码记的清清楚楚。要能提高效率。 (2.逻辑思维能力:要多多的看别人的复杂逻辑的代码,分析复杂逻辑的运算。 (3.全局能力: 不要再范改了东,却西出错。(构造软件这个很重要) (4.学习能力: 并不是每个项目都你是所熟悉的项目的,并不是每个项目中的知识你都知道,要掌握最新的技术和最有用的知识,是最关键的。要学会,提高能力,这个东西是永远对自己有好处的。 (5.沟通能力; 学会幽默,学会讲故事,学会交朋友,学会礼节。 (6.自制能力:如果一个人不能自制那这个人以后,不会有很大成果,即使很大机会发展起了,可是因为没有自制能力很容易被人利用,或自己明明知道怎么做,可是就是不能控制自己的欲望.而常做下无法挽回在错误.

四 忠告:1. 不要以为自已很差,要明白每个人都是这样一步一个脚印的走过来的。(我们要有信心) 告诉自已:比尔盖次,也是同我们一样,出生时也是巴掌大. 我们只有多学,多练才可能有出路. 2. 不要以为自已学的多就很强,世界上的高手多的是,问问自己,你每小时可以写几行代码,代码一次写下来有多少错误,如果你一次写下没有错误,一小时可以写1000代码,那才是真正的高手. 3 . 不要以为自已没有项目做就会落后于他人,人家是参加了很多项目,可是人家只是项目中的一个小角色,如果我们在空时能都写一些开源的项目,或自己开发和设计一些有用的开源的项目,水平及能力很快就上来了. 4. 不要以为自己做过很多的项目就很了不起了。你能说你做的项目中,你能体会整个项目为什么要这样设计,为什么要这样开发吗?相信绝大多数是否定的回答。那还不如多学习一些已做的项目,了解他们为什么要这么做,为什么这么开发,多看一下它们的项目的文档,我们能明白很多,这样把他们的经验放于你未来可能要接手的项目,这样不是更好吗? 5. 不要以为自己的学习能力很牛,你能快速阅读一本书又能快速掌握它的内容吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linyb极客之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
程序员:听说你正在为天天写增删改查代码而烦恼
有相当多的一部分程序员一直都只接触业余应用的功能,天天写业务代码的程序员也被戏称为CURD程序员,CURD就是增(create)、改(update)、查(read)、删(delete)的意思。
用户4831957
2019/07/01
1K0
程序员、架构师、技术经理、技术总监和CTO都是干什么的?
程序员   程序员,英文名coder/programmer,大家常自嘲叫码农的阶段。这个角色职责是把需求或产品实现为用户可用的软件产品。   此职位为执行级别。另外因为经验较少,一般需要求助别人,或与别人一起完(ban)成(zhuan)一个任务。   此阶段大概要经历3年,程序员的职责如下:   1、负责公司运营系统的设计与开发工作   2、运营数据处理和分析 高级程序员   高级程序员学名工程师。到了这个level,英文名可改叫做engineer或developer。此时你的功力开始增强,这与你平时的
架构师小秘圈
2018/04/02
6.7K0
程序员也分三六九等?等级差异,一个看不起一个!
你知道程序员、高级程序员、架构师、技术经理、技术总监之间有什么区别吗?他们的工作职责又是什么?
一墨编程学习
2019/04/18
1.3K0
程序员也分三六九等?等级差异,一个看不起一个!
如何提高程序员的生产率(下)
目录 3. 开发过程... 12 4. 架构设计... 20 5. 管理激励... 23 三、 开发过程 沟通 软件通常都需要经过很多人和很多次的沟通才能生产出来,但是沟通本身又往往会影响软件的开发速度。这是一段很矛盾的关系。好的沟通方法能降低开发中因为信息不透明导致的开发资源浪费,而又尽量减少沟通所占用的精力。 需求沟通 在任何一个软件产品中,如何应对需求的变更,都是至关重要的。需求一直是软件工作得以成功或者失败的最重要因素。软件开发中很多技术和方法都是围绕着需求来设计的。 需求的沟通是需求工作的第一个环
韩伟
2018/03/05
8950
如何成为高级java程序员
给一个刚出社会的程序员新生一个建议,想成为一个优秀的程序员,高级程序员,不能眼高手低,不能认为开发新项目,技术研发才学到东西,不能看不起维护系统,不要以为自己懂的技术越多自认为自己很牛叉。假如你忽略了一个问题那么你永远成为不了优秀的程序员、高级程序员,那就是系统优化。
java架构师
2018/08/23
4250
一个十几年程序员给所有新老程序员的忠告
吉日噶拉(在外企、上市公司工作过,自己也创业失败过,遇到过很多失败挫折,甚至露宿街头,但是最后还是挺过来了),是一个十几年的程序员了,里面介绍了他的相关经历,以及他的一下经验,无论是对刚入门的程序员,还是工作了十年八年的程序员都有一些经验值得借鉴学习。这里我也把这本书中的部分精华分享给大家,希望对大家有帮助!
AWeiLoveAndroid
2018/09/03
1.8K1
一个十几年程序员给所有新老程序员的忠告
程序员的自我修养5️⃣—不至于代码
相比码农、程序猿、软件工程师、张江男、屌丝程序员等等这些网络词汇,当你把自己看作是一个屌丝程序员的话,那你也可能就是那个衣食不愁,但整天浑浑噩噩、无所追求的屌丝。我更愿意用技匠这个词来形容程序员,就像我给自己起的花名一样。
马拉松程序员
2022/04/26
3970
软技能:开启程序员的职场“破冰之旅”
在我们聊“软技能”之前,先来区分下“软技能”和“硬实力”。通常我们将自己专业方向的技能定义为 “硬技能”,以程序员为例的话,我们的算法、计算机知识和编程能力等就属于“硬技能”,是我们吃饭的家伙,大多数人等着靠他赚钱买车买房娶妻生子,但生活质量的好坏往往由“软技能”决定的,从两类技能的关系来看,“软技能”是“硬技能”的催化剂。
技术zhai
2018/06/09
6090
软技能:开启程序员的职场“破冰之旅”
Java程序员通往架构师的修炼之路
国内我们对架构师,项目经理,开发经理或者是技术总监这类职业定位普遍不都不清晰,很多的情况是“能者多劳”,一人身兼数职。达尔文的理论在我们的行业是绝对适用的,我从进入这个行业开始我就不甘于成为淘汰者,而我也由心地热爱着这个行业很年前我就立志要成为架构师(当年流行叫:系统分析员 )这目标进发。回首这10几年的磨练,我总结了一下一名合格的架构师应该具备哪一些方面的能力以及怎么才能得到这些能力 一、编码能力 架构师是一个职业,是一种经历了各种磨练与长年开发经验积累出来的。另外我一直认为:不会编码的架构师不是一个好的
Java架构
2018/07/06
3770
IT项目开发流程(一个完整的软件项目开发流程)
首先,开发者需要对软件系统进行概要设计,即系统设计。 概要设计需要对软件系统的设计进行考虑, 包括系统的基本处理流程(包括系统逻辑、业务逻辑)、系统的组织结构(一级功能、二级功能等)、模块划分(不同的功能模块分析)、功能分配、接口设计(公用接口、私有接口、类的继承等)、运行设计、数据结构设计(数据表的设计)和出错处理设计等,为软件的详细设计提供基础。
全栈程序员站长
2022/07/29
10.8K0
IT项目开发流程(一个完整的软件项目开发流程)
Java进阶之路——如何从程序员到架构师,从码农到专家Java进阶技术方面
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题。希望这篇文章会是你看到过的最全面最权威的回答。
美的让人心动
2018/07/30
8010
Java进阶之路——如何从程序员到架构师,从码农到专家Java进阶技术方面
技术变化那么快,程序员如何做到不被淘汰?
 中国有很多年轻人,他们18,9岁或21,2岁,通过自学也写了不少代码,他们有的代码写的很漂亮,一些技术细节相当出众,也很有钻研精神,但是他们被一些错误的认识和观点左右,缺乏对系统,对程序的整体理解能力,这些人,一个网上的朋友说得很好,他们实际fans,压根没有资格称为程序员,但是据我所知,不少小网络公司的Cfans,拿着吓人的工资,做着吓人的项目,项目的结局通常也很吓人。
java架构师
2018/08/23
4110
程序员高手和菜鸟的区别是什么?
程序员的价值绝对不在于技术本身,而在于做出好用且好看程序的能力,这是一个开放性的话题,每一个人都是菜鸟过来的,老九君希望每一个做技术的小伙伴都能尽快成为高手。 1 命名 从程序代码的命名,我们就可以看出一个人的水平。最差的命名就是使用中文、拼音、拼音缩写、中英混搭,接下来要么是模仿式命名,要么干脆就随意命名。 模仿式命名典型的就是“××DAL”,说实话,我觉得类似于“UserDAL”这样的名字,我觉得太不美观了,一般这我就知道这是典型分层架构的模仿者,说明他是有些经验的人了。 随意命名,就是写代码的时候,名
老九君
2018/03/06
9310
程序员高手和菜鸟的区别是什么?
一个工作三年左右的Java程序员跟大家谈谈从业心得
貌似这一点适应的行业最广,但是我可以很肯定的说:当你从事web开发一年后,重新找工作时,才会真实的感受到这句话。 工作第一年,往往是什么都充满新鲜感,什么都学习,冲劲十足的一年;WEB行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需要来不断学习新东西;所有,很多时候感觉,自己用过的东西真多呀!但是真正深入研究的东西却不多。 面试,是跳槽后第一个需要面对的问题;而且不同公司面试的着重点不同;但是却有一个共同点:Java基础是必考的。 工作第一年,可能问你String对象创建
Java高级架构
2018/04/19
1.1K0
【转载】java架构师进阶之路
Java架构师,应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。那成为Java架构师要掌握哪些技术呢,总体来说呢,有两方面,一个是基础技术,另一个就是组织能力和提出解决方案能力了。
小勇DW3
2018/08/30
1.8K0
【转载】java架构师进阶之路
程序员的职业方向: 技术?管理?
  程序员职业生涯发展到一定程度都会面临一个选择,是走“管理 + 技术”方向,还是选择纯钻研技术走“技术 + CTO”路线。程序员职业生涯发展的问题,这是所有程序员都在关心的问题,未来究竟要怎么走,30岁之后还能不能再做程序员.......
阳光岛主
2019/02/19
7260
程序员 面试如何介绍自己
面试进行曲之技术面试(项目经验) 在前期已经讲过怎样分析自己,对自己进行一个准确的定位,选择一个合适的求职方向!并 结合自己的实际个人情况来写一份针对性很强的个人简历! 个人简历就是个人的广告! 好的 简历可以更受到用人需求单位青睐!好的简历才能让你获得面试的机会!我们还针对面试列 出了 j2ee 方面的知识点!不管是笔试还是面试都是会考到这些非常重要的知识点!面试的 技术内容并不会有想象中的那么难,主要注重基础和细节!细节决定一切!所以列罗的那些 知识点是需要下功夫去准备的! 当然列罗的那些知识点只是一
爱明依
2022/04/01
4770
做为一名java高级程序员,这些IT岗位你都了解么?
程序员   程序员,英文名coder/programmer,大家常自嘲叫码农的阶段。这个角色职责是把需求或产品实现为用户可用的软件产品。   此职位为执行级别。另外因为经验较少,一般需要求助别人,或与别人一起完(ban)成(zhuan)一个任务。   此阶段大概要经历3年,程序员的职责如下:   1、负责公司运营系统的设计与开发工作   2、运营数据处理和分析 高级程序员   高级程序员学名工程师。到了这个level,英文名可改叫做engineer或developer。此时你的功力开始增强,这与你平时的积累
三哥
2018/06/15
7040
很认真的聊一聊程序员的自我修养
程序员提高自我修养是为了什么? 程序写的好有人崇拜,有妹子喜欢?还是到博客、论坛、社区发表文章进行分享获得就?我想这是少数人的追求,也是更高的追求,在这之前 我认为 在中国,程序员提高自我修养目的 是为了 1、更好的融入工作,减少困难,增加成就 2、稳步的提升能力,提高收入,达成财务自由 2、站在更高的层面看待自己的学习和工作,树立更加适合的人生观价值观,家庭幸福,生活愉快 说的更通俗一点,就是用更加合理的方式和方法,赚取到更多的收入 何为程序员的自我修养? 正面论述很难说清楚,反向描述可能更通俗易懂
用户1667431
2018/04/18
7390
这个时代,写给我们这些浮躁的程序员
2010 年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写 给我们这些刚入行浮躁的程序员,如何成长,以下
春哥大魔王
2018/04/16
9150
这个时代,写给我们这些浮躁的程序员
推荐阅读
相关推荐
程序员:听说你正在为天天写增删改查代码而烦恼
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档