阅读更多

5顶
1踩

研发管理
如果你有一个同事,他写的程序与其说是代码,不如说更像希腊神话中女妖美杜莎的头发,你当然不能熟视无睹,你应该做出一些反应,但你可选的合适的反应方式并没有多少:自己默默的帮他整理清楚、向上级抱怨、向其他同事背后唠叨此事、闷在心里直到憋不住,或者这最大胆的方法:走上去直接对程序员说他的代码很烂。

事实上,这最大胆的方法其实也是最好的方法。大多时候,你可以做的巧妙些,从而避免由此引起的感情伤害或引发咆哮比赛。就像一句古话:只要方式正确,你可以向一个人说任何话。

当然,找到这正确的方式并不是轻而易举的事情。为了方便大家行事,下面是10种让你的表达更具技巧性的好方法。

  • 开门见山:告诉他你看不懂他写的代码,并追加一些像这样的话:“我需要你帮我理解这块代码”——这是“硅谷iOS程序员研讨会”组织者、软件程序员Tim Burks的话。
  • 推心置腹:约他出去喝两瓶啤酒,麻痹他的抵抗情绪,先从讨论编码风格说起。你会发现,他之所以这样写代码是因为这样他很方便——而不是方便开发团队。通过讨论代码不仅仅是人和机器交流的工具,更重要的是通过代码的人和人的交流,你可以让他用一种全新的思维来认识代码。
  • 高山仰止:如果你的同事敬重你,想必他也会敬仰或效仿你所敬仰的著名程序员。所以,跟他讲那些杰出程序员的故事。或者向他转述Burks的观察所得:杰出的程序员总能把自己的编码风格融入到他人的风格中。
  • 一针见血:Adobe System研究实验室的领袖人物Tom Jacobs说,“为了格式而格式化代码毫无意义,但将调整代码格式作为重构工作的一部分,增加新功能、修改bug工作的一部分,那是很正常的,因为这样做本质的增加了代码的质量。”
  • 反馈问题,而不是批评:心理学家Leon Seltzer在“当代心理学”上的一篇博客中说,“人们更喜欢接受反馈信息而不是批评——即使是负面反馈”。所以,以反馈问题的形式诉说问题。
  • 以后改进:不要苛求当前的工作,而是要求日后对此改进提高。按这种思路,你可以说:“嗨,下一次,如果你能把每个方法的行数减到10行以下,那会更好。”这比说“你的代码一塌糊涂”要中听的多。
  • 糖衣炮弹:封装你的批评,在表达“你的代码很烂”的意思前和后先恭维一番。
  • 偷换概念:如果交谈中总是说你、你、你,这很容易引起敌意,就好象你在指控罪名。所以,不如换种方式,与其说“每次都让我为你写的代码擦屁股”,不如说“有时候我真感到很沮丧,因为需要重你的代码。”
  • 引蛇出洞:这种办法稍微有些麻烦,但不失为一种以守为攻的好办法。组织一些编程大赛之类的活动。如果顺利的话,它能引出一场安全的、没有猜疑的关于如何提高你的同事的代码质量的讨论。
还有其它对付这些写烂代码的人的好办法吗?请分享出来,留在下面的评论里。

英文原文:10 Nice Ways to Say ‘Your Code Sucks’ / 译文:外刊IT评论
来自: 外刊IT评论
5
1
评论 共 4 条 请登录后发表评论
4 楼 PetriNet 2013-11-22 13:23
you are fired!
3 楼 spiniper 2013-11-20 11:31
lihao312 写道
那我今天捡了个套套?????

你可以把它反过来戴
2 楼 lihao312 2013-11-18 21:34
那我今天捡了个套套?????
1 楼 white_crucifix 2013-11-18 21:09
引用
引蛇出洞:这种办法稍微有些麻烦,但不失为一种以守为攻的好办法。组织一些编程大赛之类的活动。如果顺利的话,它能引出一场安全的、没有猜疑的关于如何提高你的同事的代码质量的讨论。


今天我拾到一个鼠标垫,为此我配了一台电脑 

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 2018最新最全java高级工程师面试题

    2018最新最全java高级工程师面试题,2018最新最全java高级工程师面试题2018最新最全java高级工程师面试题,2018最新最全java高级工程师面试题 十几个文档

  • 最新Java面试题,常见面试题及答案汇总

    Java最新面试题、面试题答案汇总

  • Java后端真实面试题大全(有详细答案)--高频/真题

    本文分享Java后端真实高频面试题,有详细答案,保你稳过面试。题目包括:Java基础、多线程、JVM、数据库、Redis、Shiro、Spring、SpringBoot、MyBatis、MQ、ELK、SpringCloud、设计模式等。 本博客包含从简单到困难...

  • Java基础知识面试题(2020最新版)

    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...

  • Java面试题大全(2020版)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java ...

  • java高频面试题(2024最新)

    java高频面试题(2023最新)

  • Java面试题大全(整理版)1000+面试题附答案详解,最全面详细,看完稳了

    Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈共有1000+道面试题。 对于Java后端的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上...

  • Java面试题总结(附答案)

    Java经典面试题系列。

  • Java基础知识面试题

    JDK中包含JRE,JDK中有一个名为jre的目录,里面包含两个文件夹bin和lib,bin就是JVM,lib就是JVM工作所需要的类库。 二、== 和 equals 的区别是什么? 1、对于基本类型,==比较的是值; 2、对于引用类型,==比较...

  • JAVA经典面试题附答案(持续更新版)

    JAVA中的几种基本类型,各占用多少字节? 下图单位是bit,非字节 1B=8bit String能被继承吗?为什么? 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的...

  • 【2022最新Java面试宝典】—— SpringBoot面试题(44道含答案)

    它主要由哪几个注解组成的?6. Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?7. SpringBoot Starter的工作原理8. Spring Boot 2.X 有什么新特性?与 1.X 有什么区别?9. SpringBoot支持什么前端模板...

  • 2024年Java面试题最新整理,附白话答案

    2024年Java开发面试题最新整理总结,本篇2023年Java面试题是我在北京地区进行面试整理得出,面试时常问的基本都在下面了。基本都是可以直接白话回答的,面试时照此回答即可,有其他常见面试问题也欢迎在评论区补充。

  • Java基础面试题50题

    创建了几个String Object 创建了俩个对象或一个对象,如果常量池中没有“xyz”第一次=在常量池中创建了一个字符串对象,第二次new又创建了一个字符串引用对象;如果常量池中有“xyz”,那就只是new的时候创建了一个...

  • java工程师面试题大全-100%公司笔试题你都能碰到几个

    java工程师面试题大全-100%公司笔试题你都能碰到几个

  • 100道最新Java面试题,常见面试题及答案汇总

    小编特意整理了100道Java面试题,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧码住吧~~ Q1:Java内部类和子类之间有什么区别? 答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限...

  • 2022JAVA面试题附答案(长期更新)

    该博客囊括了Java面试中95%的面试题,不包含算法题。如有遗漏或错误,请立刻联系我,十分感谢。

  • Java基础面试题整理

    面向对象的三个特征 封装,继承,多态.这个应该是人人皆知.有时候也会加上抽象. 多态的好处 允许不同类对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用)....

  • 110道Java初级面试题及答案(最新Java初级面试题大汇总)

    史上最全Java初中级面试题,发现网上很多Java初级面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ ...博主已将以下这些面试题整理成了一个Java面试手册,是PDF版的 1、为

  • java 入门面试题

    起因 焦虑。每次自己想跳槽的时候,内心总是担忧着那些面试题怎么解答。...收集网上各种经典的 java 面试题 做出答案,分享出去,和猿友讨论,不断进步 扩大知识图谱,扎实基础,梳理知识脉络 ...

  • Java面试题——String创建了几个对象

    在没有优化的情况下且常量池中并不存在a,b,ab,会产生4个对象,分别是常量池中的a,b,ab,new String(),在堆中分配内存,里面存着这字符串"ab"在字符串常量池中的地址,同时str2 存储在栈中,里面存储着指向堆中...

Global site tag (gtag.js) - Google Analytics