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

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

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

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

转载于:https://www.cnblogs.com/liuzongqi/p/3429283.html

《转》十种更好的表达“你的代码写的很烂”的方法相关推荐

  1. uml活动图 各个功能的操作流程和分支_UML建模更好的表达产品逻辑

    UML(UnifiedModeling Language,统一建模语言) 是一种在软件设计时提供给分析师.设计师和工程师之间的通用语言.UML在软件需求分析及整个产品生命周期中起着重要作用:一是有助于 ...

  2. C语言干货分享|更高层次编写嵌入式C代码

    摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理:分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编译器为例,介绍了该编译器的特性.对未定义行为的处理以及一些高级应 ...

  3. 【openai】请帮我设计一个通用的ERP管理系统,涉及到的表结构用mysql语言表达出来,全部写出来

    背景 这周末把openAi集成到自己的web系统里面了 尝试提问了几个技术和日常问题,感觉回答的还不错 问题1:[请帮我设计一个通用的ERP管理系统,涉及到的表结构用mysql语言表达出来,全部写出来 ...

  4. java 调用wget_通过命令行执行WGET下载会更快,而通过Java代码执行时会更慢

    我正在使用WGET通过java代码下载文件,这需要大约10分钟才能下载20 MB文件.但是通过命令行执行wget下载,同样的文件以10MbPs的速度在7秒内下载.有人知道为什么吗?我该如何改进我的Ja ...

  5. C++ 17 标准正式发布:终于能更简单地编写和维护代码了!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 何为 C++ 17? C++17 是继 C++14 之后,C++ 编程语言 ISO/IEC ...

  6. 远离你的电脑,代码写得更好!

    2019独角兽企业重金招聘Python工程师标准>>> 我最近才意识到,如果你对着电脑,用着编译器.IDE 和工具等,是搞不出什么好代码的.最佳的编程地点是--远离你的这些工具--在 ...

  7. 华晨宏盛让理财更有实用性的小窍门有哪些?最好的理财方法有哪些

    很多人应该听说过:你不睬财,财不睬你这句话,只要自己对理财注重,才有或许挣钱,那么让理财更有实用性的小窍门有哪些?最好的理财方法有哪些? 珠海华晨控股有限责任公司(简称"华晨宏盛" ...

  8. 目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码

    目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码 前言 本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理:分析了编译器语义检查的不足之处并给出防范措施,以Keil MDK编 ...

  9. 7代cpu linux 内核,Linux Kernel 5.7-rc2 发布,支持更大的AMD CPU微代码文件

    Linux 5.7特性开发的第一个候选版本已经发布一周了,今天发布用于测试的是Linux 5.7-rc2内核更新. 由于已经通过了合并窗口,Linux Kernel 5.7-rc2主要关注于解决5.7 ...

最新文章

  1. 昨天,JetBrains 推出“下一代 IDE”,快看有哪些值得期待的功能!
  2. 从科学简历看研究方法——爱因斯坦探索性的演绎法
  3. mysql导入数据权限_mysql5.7导入数据的权限问题
  4. 道格拉斯-普克 Douglas-Peuker(DP算法) python java实现
  5. html 定义函数调用函数,请问HTML function函数怎么定义和调用?
  6. 连续锁定2个不同的锁会死锁_研究死锁–第5部分:使用显式锁定
  7. ZOJ 1586 QS Network
  8. 快讯:2018 OOW Oracle技术大会PPT抢鲜下载
  9. java 获取方法_Java 反射理解(三)-- Java获取方法信息
  10. C# Design Patterns (3) - Decorator
  11. EDA鸿蒙是不是,如果华为不强研鸿蒙,和阿里合作,新系统或早用到手机上了? - 区块网...
  12. 数据通路习题分析之二
  13. Web开发者必备的十大网站资源(转贴)
  14. 编译」(compile),与「反编译」(decompile)..哪些语言容易被反编译.
  15. 基于大并发抽奖的队列实现
  16. IOS:游戏存档修改,替换
  17. DSP eQEP正交编码
  18. 董明珠“跳槽不用” VS雷军“复仇者联盟”,人才在内还是在外?
  19. 利用ptrace设计一个简单的debugger调试器
  20. 查看患者信息java_Java通过反射查看类的信息示例

热门文章

  1. 机器学习中的特征工程总结!
  2. 万物皆可embedding,AI 应用神器 Milvus 登顶数据库顶会 SIGMOD
  3. PSS:更简单有效的End-to-End检测
  4. 90后教授:回国是用数学计算出的“最优解”
  5. 【每日一算法】杨辉三角到底是什么?
  6. 环形熔断器设计与gobreaker源码分析
  7. Linux内核网络栈1.2.13-网卡设备的初始化流程
  8. python转换数据类型(int、float、str、eval、tuple、list、chr、ord、bin、oct、hex)
  9. 复习计算机网络基础 day4--OSI与TCP/IP初步认识
  10. 计算机视觉以及它在商业中是如何应用的?