找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 5295|回复: 54

[职业生涯] 代码被改的面目全非,求开导

[复制链接]
发表于 2014-11-24 10:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

×
LZ程序猿一枚
两周前,lead developer给布置了个任务,刚开始觉得挺难,好几天都在看文档,没什么进展。后来跟他讨论了一次,觉得有思路就开始做。用了一周多弄完了,期间也有询问他的意见,最后的成果他看了也表示很满意。LZ以为就这么结束了。
可是最近几天他开始修改我写的代码,刚开始只是小改动,我也没在意,觉得还是自己的基本功不够,写的不够漂亮。今天早上来,发现他周末把整个代码全重写了。基本看不到原来的影子了,连最基本的加密方法都重写了。这是神马意思啊?LZ太玻璃心了么?

PS:求推荐书,如何能把代码写的漂亮,如何规划类。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
发表于 2014-11-24 10:48 来自手机 | 显示全部楼层
多看看design pattern,再者就是和老江湖多讨教。每个人对code的写法都有自己的习惯
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 10:57 | 显示全部楼层
hyd198471 发表于 2014-11-24 09:48
多看看design pattern,再者就是和老江湖多讨教。每个人对code的写法都有自己的习惯

LZ 现在超级不自信了
我吭哧吭哧写了一周多得代码,人家一个周末就全改了,他肯定觉得我能力太差。
而我又觉得自己的劳动成果,没有得到尊重。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 11:11 | 显示全部楼层
直接问不是更好?程序能跑不代表有用。不可扩展维护的代码就是垃圾。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 11:26 | 显示全部楼层
waxwings 发表于 2014-11-24 10:11
直接问不是更好?程序能跑不代表有用。不可扩展维护的代码就是垃圾。

明白了,LZ这就去把他的代码好好读一遍
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 11:54 | 显示全部楼层
本帖最后由 adgjl 于 2014-11-24 10:55 编辑
LZ程序猿一枚
两周前,lead developer给布置了个任务,刚开始觉得挺难,好几天都在看文档,没什么进展。后来跟他讨论了一次,觉得有思路就开始做。用了一周多弄完了,期间也有询问他的意见,最后的成果他看了也表示很满意。LZ以为就这么结束了。

可是最近几天他开始修改我写的代码,刚开始只是小改动,我也没在意,觉得还是自己的基本功不够,写的不够漂亮。今天早上来,发现他周末把整个代码全重写了。基本看不到原来的影子了,连最基本的加密方法都重写了。这是神马意思啊?LZ太玻璃心了么?

PS:求推荐书,如何能把代码写的漂亮,如何规划类。

“把代码写的漂亮”并不是排版格式意义上的漂亮,而是程序结构的简洁高效和可扩展。说起来简单,实际上就是编程水平问题。

如果你是你已经工作好几年不是新手了,仍然代码被别人改的面目全非,你就要从自身找原因而不是埋怨lead developer了。

如果你是lead developer,看到你负责的程序里面有写得很差的程序,你只有两个选择,要么照顾别人面子,然后自己承受以后维护改错和扩展的头痛,要么趁程序还没启用直接改成以后好维护的程序。这取决于需要改动的程序有多少,如果量不大,人家就会顺手改了。

如何提高编程水平?我倒觉得其实你机会很好,有个高手在身边。多看看他写得代码,多动动脑分析人家为什么这么写,下次照葫芦画瓢,比你维护自己的玻璃心有意义多了。

点评

+10086  发表于 2014-11-24 14:51
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 12:14 | 显示全部楼层
先研究研究为什么吧。
有些老程序员都有自己一套很奇怪的coding style,如果是这种情况,只能默哀了
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 12:22 | 显示全部楼层
adgjl 发表于 2014-11-24 10:54
“把代码写的漂亮”并不是排版格式意义上的漂亮,而是程序结构的简洁高效和可扩展。说起来简单,实际上就 ...

多谢提点。 刚刚又仔细读了他的代码,应该就是你所说的可扩展性强了。请问这种思路是工作过程中训练出来的,或者有什么推荐的书读一读么?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 12:33 | 显示全部楼层
水号号 发表于 2014-11-24 11:22
多谢提点。 刚刚又仔细读了他的代码,应该就是你所说的可扩展性强了。请问这种思路是工作过程中训练出来的,或者有什么推荐的书读一读么?

看书用处不大,这一方面是养成思考的习惯训练出来的,另一方面就是经验。

第一,你编程的时候随时要下意识地考虑到客户未来可能添加的需求。这一步是下意识的,因为你主动想甚至都想不起来。
第二,你曾经做过的项目里面,客户提出过的要求,下一个项目的客户很可能提出同样的需求,你就得从一开始就考虑到,省得以后客户提出来你的程序需要大改。

这就是前瞻性的编程。打个简单的比方,让你做一个搜索引擎,你可能就会只作个全文搜索,前瞻性的程序员会考虑到客户使用搜索功能的时候提出的其他需求,比如,输入自动完成,输入错误自动纠正,词频分析,搜索自学习……这些功能不一定一开始全部实现(没那么多预算和时间),但是你必须预留出借口和占位逻辑模块,以便将来实现。否则将来一旦客户提出来你的程序就要大动手术。

这些想法你打算从书里面学习不现实,只能多动脑,多看高手的程序。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 12:43 | 显示全部楼层
有些德国人是有强迫症的。
他们受不了一点不规范的coding.
我经常是注重结果,不太注意pretty print.
他们会不厌其烦的给我改格式,大小写,kommentar。。。连标点符号都改!
就像两口子过日子,你老婆总是让你注意各种细节,时间长了就受不了了
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 12:44 | 显示全部楼层
本帖最后由 并非如此 于 2014-11-24 11:50 编辑

你可以看看clear code这本书,还有就是要看design pattern, 不管能不能看懂,都要把常用的design pattern烂熟于心,反复的去思考,为什么??? 随着经验的增加,你会理解的越来越多,看书是非常有用的,设计软件的原则非常简单,但是方法论却非常多, 不要人云亦云, 一定要清楚明白自己写代码的意图,什么时候你能充分理解clear code和所有的基础design pattern, 你就可以藐视德国近90%的程序员,你会发现其实高手真的不多。

还有看书,不代表以书为标准,而是以你的理解为标准,书上有很多不同的见解,也许在你看来是错误的,所以要带着思考看这些书。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 13:02 | 显示全部楼层
本帖最后由 深知我心 于 2014-11-24 12:40 编辑

lz 工作多久了,能问下嘛?

很多的德国人就是这样,表面说你做的不错,其实他都不满意,全改了

关键你说的这个任务多大? 是实现了一个功能模块,还是只implementieren 几个类?

1. 如果是一个功能模块,那你们头不满意修改你代码,很可能是对功能的实现不满意,也就说你做出来的结果很可能不太对

但头为了维护你的面子,表面说很好,但他自己基本重新做了一遍,德国人经常这么干,这个跟你工作多久有关,一般对新手头才会这么干,老手的话,头会直接提出自己的意见,让他自己改

2. 如果功能实现的很好,他改动只是代码层面的,那说明你的代码结构不太好,比如该定义成接口的,你写成了类,这样没法更好的解耦和扩展

3. 还有一种就是你在这个aufgabe里只implementieren了或者修改了几个类,那很可能因为你是新手,写的代码不太规范和清晰,比如名字取的不好,空行不规范,所以他改了一下

所有人修改提交的东西,你们头都要过目吗?那不累死了?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 13:02 | 显示全部楼层
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 13:29 | 显示全部楼层
深知我心 发表于 2014-11-24 12:02
lz 工作多久了,能问下嘛?

很多的德国人就是这样,表面说你做的不错,其实他都不满意,全改了

大规模的改动,无论是代码层面上还是构架还是算法层面上并不重要,问题是楼主已经工作多久了。

如果是已经有好几年工作经验,楼主就要自我检讨了,说明楼主在编程上要加倍努力了,因为几年还出这样的问题,如果不特别努力,未来几年提高也有限,会一直受到类似的困扰。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 14:40 | 显示全部楼层
并非如此 发表于 2014-11-24 11:44
你可以看看clear code这本书,还有就是要看design pattern, 不管能不能看懂,都要把常用的design pattern ...

多谢,说实话design pattern是了解的,但是都是皮毛,看人家用还行,自己用还是漏洞百出。用功去了。。。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 14:45 | 显示全部楼层
深知我心 发表于 2014-11-24 12:02
lz 工作多久了,能问下嘛?

很多的德国人就是这样,表面说你做的不错,其实他都不满意,全改了

感谢码了这么多字,看来我的问题还非常大,自己用功去了
我们头就是这样的人,也不知道他是不放心别人,还是太负责任,大多数的代码他都会过目的。不然他干嘛周末还在干活。幸好他不要求别人全都周末加班。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 14:52 | 显示全部楼层
adgjl 发表于 2014-11-24 11:33
看书用处不大,这一方面是养成思考的习惯训练出来的,另一方面就是经验。

第一,你编程的时候随时要下 ...

Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 15:08 | 显示全部楼层
水号号 发表于 2014-11-24 13:45
感谢码了这么多字,看来我的问题还非常大,自己用功去了
我们头就是这样的人,也不知道他是不放心别人, ...

感觉你还是个很谦虚又上进的好孩子。。哈哈
很多wartbarkeit差的代码,底子没有打好的恶果越往后看得越清楚。。很多程序过了几年无论要加或改什么小东西,Aufwand都是无法想象的大,最后改一个程序比重新写一个还费劲。就像上面说的,程序laufen起来很容易,但不是能laufen的代码就是干净的代码。

楼主不必玻璃心了,身边有个高手可以给你指点,绝对是提升的最effizient的途径。多问,多看看人家给你改的,多学,多领悟。剩下就是时间的问题了。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 15:40 | 显示全部楼层
你把你一年前的代码翻出来看,你自己都也看不下去。。。

这就叫经验。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-24 17:19 | 显示全部楼层
krap 发表于 2014-11-24 14:08
感觉你还是个很谦虚又上进的好孩子。。哈哈
很多wartbarkeit差的代码,底子没有打好的恶果越往后看得越 ...

嗯嗯,我觉得我就是底子没有打好,面向对象啊,设计模式啊,只是上学时掌握的一堆理论,应付考试还可以。没有在实际应用中去体会。要把书在翻出来对照着实际项目好好学习。多谢指教。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 18:10 | 显示全部楼层
水号号 发表于 2014-11-24 16:19
嗯嗯,我觉得我就是底子没有打好,面向对象啊,设计模式啊,只是上学时掌握的一堆理论,应付考试还可以。 ...

lz工作多久了?刚入职有人教是件多么幸福的事儿~
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 19:30 | 显示全部楼层
本帖最后由 深知我心 于 2014-11-24 18:32 编辑
水号号 发表于 2014-11-24 13:40
多谢,说实话design pattern是了解的,但是都是皮毛,看人家用还行,自己用还是漏洞百出。用功去了。。。


不用着急,这些东西都是经验积累,看书是没用的

比如设计模式,看书没用,只能在实际中积累经验以后才能体会,不然有些看也看不懂

开发有好几种情况啊,有的系统底层已经做得很成熟了,你的任务只是在最顶层增加些新功能,改进/改写一些现成的类,增加一些新子类什么的,这种用不着什么design pattern啊

如果你现在做得项目是开发一个新系统,一切从头来的,从最底层开始impementieren,那需要考虑design pattern 和系统架构之类的东西

我只做过第一种的,所以设计模式不太懂,也没怎么用过   哈哈

设计模式这个东西,如果没有实际经验的话,光看书没用,只能表面上理解,有的还不太理解

比如用过spring你才了解工厂模式,不然只看书,认知太表面了
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 19:33 | 显示全部楼层
adgjl 发表于 2014-11-24 11:33
看书用处不大,这一方面是养成思考的习惯训练出来的,另一方面就是经验。

第一,你编程的时候随时要下 ...

我现在设计结构的原则是就当客户是外星人,可以提出任何不合人类思维模式的修改要求。然后很汗的发现,很多为不是常人准备的“可扩展性”最后都真的用到了。。。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-24 23:54 | 显示全部楼层
谢谢楼主这个帖子, 学习了很多。

能不能请教一下lead developer一般是做什么呢? 什么水平才能算呢?
我原来是数字信号处理方面的system engineer, 年初时因为公司变动调到了现在这个部门, 目前写embedded system 针对video 或者audio方面的驱动。  我在这方面完全是新手, 调过来的位置变成了software developer, 但实际上我在编程,包括写driver方面的经验很少。 今年员工谈话, 老板说对我的期望是做lead developer。 我该补充哪些知识呢, 你们前面说的clear code还有pattern design 也适用于embedded c吗? 不好意思可能我的问题比较傻, 还请大家不吝赐教。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-25 01:12 | 显示全部楼层
棒棒夫人 发表于 2014-11-24 22:54
谢谢楼主这个帖子, 学习了很多。

能不能请教一下lead developer一般是做什么呢? 什么水平才能算呢?  ...

embedded路子不一样,尤其驱动,驱动得按接口写
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-25 01:18 | 显示全部楼层
yeets 发表于 2014-11-25 00:12
embedded路子不一样,尤其驱动,驱动得按接口写

谢谢回答。
是, 我现在就是按照spec中的register 手册来写。 我想问, 这样的驱动怎么才能写得好呢? 就是你们谈到的那些coding style和pattern design也能用到这儿吗?
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-25 11:02 | 显示全部楼层
棒棒夫人 发表于 2014-11-24 22:54
谢谢楼主这个帖子, 学习了很多。

能不能请教一下lead developer一般是做什么呢? 什么水平才能算呢?  ...

不好意思,我对你所做的领域完全不了解。但是就lead developer来说,我所认识到的就是他们的知识面都很广,不一定精通,但是各个领域都有涉猎,架构,性能,安全等等。

点评

能不能问问你们那边的lead developer都多少年工作经验了呢?  发表于 2014-11-25 13:39
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-25 12:31 | 显示全部楼层
棒棒夫人 发表于 2014-11-25 00:18
谢谢回答。
是, 我现在就是按照spec中的register 手册来写。 我想问, 这样的驱动怎么才能写得好呢?  ...

coding style 写code就得用,Design pattern 一般得在系统层以上用。驱动主要是效率,以及安全。稍微了解点汇编有好处。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-25 12:38 | 显示全部楼层
棒棒夫人 发表于 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。

但是纸上得来终觉浅,绝知此事要躬行。光看书没用的,很多时候都是吃一堑长一智,想不吃堑涨点智是可以的,但是把智长全了不太可能。
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

发表于 2014-11-25 12:52 来自手机 | 显示全部楼层
棒棒夫人 发表于 2014-11-25 00:18
谢谢回答。
是, 我现在就是按照spec中的register 手册来写。 我想问, 这样的驱动怎么才能写得好呢?  ...

Design Partnern 可以参加个Training,我参加过,两天,但你要带着你自己的问题,否则就是笼统的内部培训
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

Archiver|手机版|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+2, 2025-8-27 13:57 , Processed in 0.145522 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表