代码被改的面目全非,求开导
LZ程序猿一枚两周前,lead developer给布置了个任务,刚开始觉得挺难,好几天都在看文档,没什么进展。后来跟他讨论了一次,觉得有思路就开始做。用了一周多弄完了,期间也有询问他的意见,最后的成果他看了也表示很满意。LZ以为就这么结束了。
可是最近几天他开始修改我写的代码,刚开始只是小改动,我也没在意,觉得还是自己的基本功不够,写的不够漂亮。今天早上来,发现他周末把整个代码全重写了。基本看不到原来的影子了,连最基本的加密方法都重写了。这是神马意思啊?LZ太玻璃心了么?
PS:求推荐书,如何能把代码写的漂亮,如何规划类。 多看看design pattern,再者就是和老江湖多讨教。每个人对code的写法都有自己的习惯 hyd198471 发表于 2014-11-24 09:48
多看看design pattern,再者就是和老江湖多讨教。每个人对code的写法都有自己的习惯
LZ 现在超级不自信了
我吭哧吭哧写了一周多得代码,人家一个周末就全改了,他肯定觉得我能力太差。
而我又觉得自己的劳动成果,没有得到尊重。 直接问不是更好?程序能跑不代表有用。不可扩展维护的代码就是垃圾。 waxwings 发表于 2014-11-24 10:11
直接问不是更好?程序能跑不代表有用。不可扩展维护的代码就是垃圾。
明白了,LZ这就去把他的代码好好读一遍 本帖最后由 adgjl 于 2014-11-24 10:55 编辑
LZ程序猿一枚
两周前,lead developer给布置了个任务,刚开始觉得挺难,好几天都在看文档,没什么进展。后来跟他讨论了一次,觉得有思路就开始做。用了一周多弄完了,期间也有询问他的意见,最后的成果他看了也表示很满意。LZ以为就这么结束了。
可是最近几天他开始修改我写的代码,刚开始只是小改动,我也没在意,觉得还是自己的基本功不够,写的不够漂亮。今天早上来,发现他周末把整个代码全重写了。基本看不到原来的影子了,连最基本的加密方法都重写了。这是神马意思啊?LZ太玻璃心了么?
PS:求推荐书,如何能把代码写的漂亮,如何规划类。
“把代码写的漂亮”并不是排版格式意义上的漂亮,而是程序结构的简洁高效和可扩展。说起来简单,实际上就是编程水平问题。
如果你是你已经工作好几年不是新手了,仍然代码被别人改的面目全非,你就要从自身找原因而不是埋怨lead developer了。
如果你是lead developer,看到你负责的程序里面有写得很差的程序,你只有两个选择,要么照顾别人面子,然后自己承受以后维护改错和扩展的头痛,要么趁程序还没启用直接改成以后好维护的程序。这取决于需要改动的程序有多少,如果量不大,人家就会顺手改了。
如何提高编程水平?我倒觉得其实你机会很好,有个高手在身边。多看看他写得代码,多动动脑分析人家为什么这么写,下次照葫芦画瓢,比你维护自己的玻璃心有意义多了。 先研究研究为什么吧。
有些老程序员都有自己一套很奇怪的coding style,如果是这种情况,只能默哀了 adgjl 发表于 2014-11-24 10:54
“把代码写的漂亮”并不是排版格式意义上的漂亮,而是程序结构的简洁高效和可扩展。说起来简单,实际上就 ...
多谢提点。 刚刚又仔细读了他的代码,应该就是你所说的可扩展性强了。请问这种思路是工作过程中训练出来的,或者有什么推荐的书读一读么? 水号号 发表于 2014-11-24 11:22
多谢提点。 刚刚又仔细读了他的代码,应该就是你所说的可扩展性强了。请问这种思路是工作过程中训练出来的,或者有什么推荐的书读一读么?
看书用处不大,这一方面是养成思考的习惯训练出来的,另一方面就是经验。
第一,你编程的时候随时要下意识地考虑到客户未来可能添加的需求。这一步是下意识的,因为你主动想甚至都想不起来。
第二,你曾经做过的项目里面,客户提出过的要求,下一个项目的客户很可能提出同样的需求,你就得从一开始就考虑到,省得以后客户提出来你的程序需要大改。
这就是前瞻性的编程。打个简单的比方,让你做一个搜索引擎,你可能就会只作个全文搜索,前瞻性的程序员会考虑到客户使用搜索功能的时候提出的其他需求,比如,输入自动完成,输入错误自动纠正,词频分析,搜索自学习……这些功能不一定一开始全部实现(没那么多预算和时间),但是你必须预留出借口和占位逻辑模块,以便将来实现。否则将来一旦客户提出来你的程序就要大动手术。
这些想法你打算从书里面学习不现实,只能多动脑,多看高手的程序。 有些德国人是有强迫症的。
他们受不了一点不规范的coding.
我经常是注重结果,不太注意pretty print.
他们会不厌其烦的给我改格式,大小写,kommentar。。。连标点符号都改!
就像两口子过日子,你老婆总是让你注意各种细节,时间长了就受不了了{:8_471:} 本帖最后由 并非如此 于 2014-11-24 11:50 编辑
你可以看看clear code这本书,还有就是要看design pattern, 不管能不能看懂,都要把常用的design pattern烂熟于心,反复的去思考,为什么??? 随着经验的增加,你会理解的越来越多,看书是非常有用的,设计软件的原则非常简单,但是方法论却非常多, 不要人云亦云, 一定要清楚明白自己写代码的意图,什么时候你能充分理解clear code和所有的基础design pattern, 你就可以藐视德国近90%的程序员,你会发现其实高手真的不多。
还有看书,不代表以书为标准,而是以你的理解为标准,书上有很多不同的见解,也许在你看来是错误的,所以要带着思考看这些书。
本帖最后由 深知我心 于 2014-11-24 12:40 编辑
lz 工作多久了,能问下嘛?
很多的德国人就是这样,表面说你做的不错,其实他都不满意,全改了
关键你说的这个任务多大? 是实现了一个功能模块,还是只implementieren 几个类?
1. 如果是一个功能模块,那你们头不满意修改你代码,很可能是对功能的实现不满意,也就说你做出来的结果很可能不太对
但头为了维护你的面子,表面说很好,但他自己基本重新做了一遍,德国人经常这么干,这个跟你工作多久有关,一般对新手头才会这么干,老手的话,头会直接提出自己的意见,让他自己改
2. 如果功能实现的很好,他改动只是代码层面的,那说明你的代码结构不太好,比如该定义成接口的,你写成了类,这样没法更好的解耦和扩展
3. 还有一种就是你在这个aufgabe里只implementieren了或者修改了几个类,那很可能因为你是新手,写的代码不太规范和清晰,比如名字取的不好,空行不规范,所以他改了一下
所有人修改提交的东西,你们头都要过目吗?那不累死了? clean code
code complete 深知我心 发表于 2014-11-24 12:02
lz 工作多久了,能问下嘛?
很多的德国人就是这样,表面说你做的不错,其实他都不满意,全改了
大规模的改动,无论是代码层面上还是构架还是算法层面上并不重要,问题是楼主已经工作多久了。
如果是已经有好几年工作经验,楼主就要自我检讨了,说明楼主在编程上要加倍努力了,因为几年还出这样的问题,如果不特别努力,未来几年提高也有限,会一直受到类似的困扰。 并非如此 发表于 2014-11-24 11:44
你可以看看clear code这本书,还有就是要看design pattern, 不管能不能看懂,都要把常用的design pattern ...
多谢,说实话design pattern是了解的,但是都是皮毛,看人家用还行,自己用还是漏洞百出。用功去了。。。 深知我心 发表于 2014-11-24 12:02
lz 工作多久了,能问下嘛?
很多的德国人就是这样,表面说你做的不错,其实他都不满意,全改了
感谢码了这么多字,看来我的问题还非常大,自己用功去了
我们头就是这样的人,也不知道他是不放心别人,还是太负责任,大多数的代码他都会过目的。不然他干嘛周末还在干活。幸好他不要求别人全都周末加班。 adgjl 发表于 2014-11-24 11:33
看书用处不大,这一方面是养成思考的习惯训练出来的,另一方面就是经验。
第一,你编程的时候随时要下 ...
{:5_394:} 水号号 发表于 2014-11-24 13:45
感谢码了这么多字,看来我的问题还非常大,自己用功去了
我们头就是这样的人,也不知道他是不放心别人, ...
感觉你还是个很谦虚又上进的好孩子。。哈哈
很多wartbarkeit差的代码,底子没有打好的恶果越往后看得越清楚。。很多程序过了几年无论要加或改什么小东西,Aufwand都是无法想象的大,最后改一个程序比重新写一个还费劲。就像上面说的,程序laufen起来很容易,但不是能laufen的代码就是干净的代码。
楼主不必玻璃心了,身边有个高手可以给你指点,绝对是提升的最effizient的途径。多问,多看看人家给你改的,多学,多领悟。剩下就是时间的问题了。 你把你一年前的代码翻出来看,你自己都也看不下去。。。
这就叫经验。 krap 发表于 2014-11-24 14:08
感觉你还是个很谦虚又上进的好孩子。。哈哈
很多wartbarkeit差的代码,底子没有打好的恶果越往后看得越 ...
嗯嗯,我觉得我就是底子没有打好,面向对象啊,设计模式啊,只是上学时掌握的一堆理论,应付考试还可以。没有在实际应用中去体会。要把书在翻出来对照着实际项目好好学习。多谢指教。 水号号 发表于 2014-11-24 16:19
嗯嗯,我觉得我就是底子没有打好,面向对象啊,设计模式啊,只是上学时掌握的一堆理论,应付考试还可以。 ...
lz工作多久了?刚入职有人教是件多么幸福的事儿~ 本帖最后由 深知我心 于 2014-11-24 18:32 编辑
水号号 发表于 2014-11-24 13:40
多谢,说实话design pattern是了解的,但是都是皮毛,看人家用还行,自己用还是漏洞百出。用功去了。。。
不用着急,这些东西都是经验积累,看书是没用的
比如设计模式,看书没用,只能在实际中积累经验以后才能体会,不然有些看也看不懂
开发有好几种情况啊,有的系统底层已经做得很成熟了,你的任务只是在最顶层增加些新功能,改进/改写一些现成的类,增加一些新子类什么的,这种用不着什么design pattern啊
如果你现在做得项目是开发一个新系统,一切从头来的,从最底层开始impementieren,那需要考虑design pattern 和系统架构之类的东西
我只做过第一种的,所以设计模式不太懂,也没怎么用过 哈哈
设计模式这个东西,如果没有实际经验的话,光看书没用,只能表面上理解,有的还不太理解
比如用过spring你才了解工厂模式,不然只看书,认知太表面了 adgjl 发表于 2014-11-24 11:33
看书用处不大,这一方面是养成思考的习惯训练出来的,另一方面就是经验。
第一,你编程的时候随时要下 ...
我现在设计结构的原则是就当客户是外星人,可以提出任何不合人类思维模式的修改要求。然后很汗的发现,很多为不是常人准备的“可扩展性”最后都真的用到了。。。 谢谢楼主这个帖子, 学习了很多。
能不能请教一下lead developer一般是做什么呢? 什么水平才能算呢?
我原来是数字信号处理方面的system engineer, 年初时因为公司变动调到了现在这个部门, 目前写embedded system 针对video 或者audio方面的驱动。我在这方面完全是新手, 调过来的位置变成了software developer, 但实际上我在编程,包括写driver方面的经验很少。 今年员工谈话, 老板说对我的期望是做lead developer。 我该补充哪些知识呢, 你们前面说的clear code还有pattern design 也适用于embedded c吗? 不好意思可能我的问题比较傻, 还请大家不吝赐教。 棒棒夫人 发表于 2014-11-24 22:54
谢谢楼主这个帖子, 学习了很多。
能不能请教一下lead developer一般是做什么呢? 什么水平才能算呢?...
embedded路子不一样,尤其驱动,驱动得按接口写
yeets 发表于 2014-11-25 00:12
embedded路子不一样,尤其驱动,驱动得按接口写
谢谢回答。
是, 我现在就是按照spec中的register 手册来写。 我想问, 这样的驱动怎么才能写得好呢? 就是你们谈到的那些coding style和pattern design也能用到这儿吗? 棒棒夫人 发表于 2014-11-24 22:54
谢谢楼主这个帖子, 学习了很多。
能不能请教一下lead developer一般是做什么呢? 什么水平才能算呢?...
不好意思,我对你所做的领域完全不了解。但是就lead developer来说,我所认识到的就是他们的知识面都很广,不一定精通,但是各个领域都有涉猎,架构,性能,安全等等。 棒棒夫人 发表于 2014-11-25 00:18
谢谢回答。
是, 我现在就是按照spec中的register 手册来写。 我想问, 这样的驱动怎么才能写得好呢?...
coding style 写code就得用,Design pattern 一般得在系统层以上用。驱动主要是效率,以及安全。稍微了解点汇编有好处。 棒棒夫人 发表于 2014-11-24 22:54
谢谢楼主这个帖子, 学习了很多。
能不能请教一下lead developer一般是做什么呢? 什么水平才能算呢?
我原来是数字信号处理方面的system engineer, 年初时因为公司变动调到了现在这个部门, 目前写embedded system 针对video 或者audio方面的驱动。我在这方面完全是新手, 调过来的位置变成了software developer, 但实际上我在编程,包括写driver方面的经验很少。 今年员工谈话, 老板说对我的期望是做lead developer。 我该补充哪些知识呢, 你们前面说的clear code还有pattern design 也适用于embedded c吗? 不好意思可能我的问题比较傻, 还请大家不吝赐教。
设计模式哪里都用得到的。你可以去搜一本书,叫Design Patterns for Embedded Systems in C: An Embedded Software Engineering Toolkit。
但是纸上得来终觉浅,绝知此事要躬行。光看书没用的,很多时候都是吃一堑长一智,想不吃堑涨点智是可以的,但是把智长全了不太可能。 棒棒夫人 发表于 2014-11-25 00:18
谢谢回答。
是, 我现在就是按照spec中的register 手册来写。 我想问, 这样的驱动怎么才能写得好呢?...
Design Partnern 可以参加个Training,我参加过,两天,但你要带着你自己的问题,否则就是笼统的内部培训
页:
[1]
2