Language agnostic 如何告诉某人他们的mod';我的节目有什么不好?

Language agnostic 如何告诉某人他们的mod';我的节目有什么不好?,language-agnostic,feedback,Language Agnostic,Feedback,G'day 这与和有关,但我正在看一个更具体的情况 也就是说,我如何告诉一个“明星”,他们对我编写的程序所做的更改是拙劣的,并且执行不一致,而不只是听起来像是我对某人“玩弄我的东西”感到恼火 添加的新功能在这个shell脚本的原始版本中被慎重地忽略了,以使它尽可能简单,直到我们了解了系统在加载时将看到的错误 基本上,我认为,尝试和事后猜测所有错误情况是不可能的,事实上,在做了大量工作之后,可能会让我们走上一条完全错误的道路 在看到需要添加的内容后,有人插手并进行了添加,但不幸的是: 逻辑不一致

G'day

这与和有关,但我正在看一个更具体的情况

也就是说,我如何告诉一个“明星”,他们对我编写的程序所做的更改是拙劣的,并且执行不一致,而不只是听起来像是我对某人“玩弄我的东西”感到恼火

添加的新功能在这个shell脚本的原始版本中被慎重地忽略了,以使它尽可能简单,直到我们了解了系统在加载时将看到的错误

基本上,我认为,尝试和事后猜测所有错误情况是不可能的,事实上,在做了大量工作之后,可能会让我们走上一条完全错误的道路

在看到需要添加的内容后,有人插手并进行了添加,但不幸的是:

  • 逻辑不一致
  • 变量名不再描述它们所包含的数据
  • 几乎没有任何评论
  • 变量的使用方式不容易理解,并且大大降低了可读性和可维护性
  • 我总是从达米恩·康威的角度来尝试编码,“总是像你的系统将由一个知道你住在哪里的精神病患者来维护一样进行编码。”也就是说,我试图让它易于理解,而不是作为我自己才华的广告。“这段代码是做什么的?”练习很有趣,最好留给IMHO进行混淆比赛

    收到的任何建议都很受欢迎


    干杯,

    如果您已经为项目明确定义了编码标准,请指出需要更改代码以满足这些标准。您在那里的列表似乎是相当合理的反馈(尽管#3有很多争论;我只会推动记录真正令人困惑的部分,因为修复其他三点,希望能使代码不那么令人困惑)。

    如果您的存储库中有来自该开发人员的任何其他示例,这些示例已经存在几个月了,给他看一个,问他它在干什么。(几个月后给他看这个)。当他必须快速查找变量中的实际内容,并解构每一行代码以了解它在做什么时。就在那里开始一个代码审查/配对编程会话。一起进行重构和重命名,这样他就有希望开始自己明白为什么这些东西很重要。

    我只想说实话。你不一定要指出每一个错误的小细节,但值得举几个例子来说明你将要提出的一般观点。你可能想记下你在第一次简短反馈中没有提到的其他例子,以防它们质疑你的推理

    尽量确保反馈完全是关于代码而不是人的。例如:

    好:
    foo()
    中的参数验证似乎与
    bar()中的参数验证不一致。在
    foo()

    坏:你的论点到处都是。在
    foo()
    中抛出
    NullPointerException
    ,但在
    bar()
    中抛出
    illegargumentException
    。请尽量保持一致

    即使有一个“请”字,第二种形式也是在谈论开发人员,而不是代码

    当然,在很多情况下,你不必担心会如此小心,但如果你认为他们会对此非常敏感,那么值得付出努力。(如果是书面反馈,请仔细阅读您所写的内容:我无意中在第一个版本中加入了一个“您”:


    我发现,大多数开发人员(无论是否是超级明星)都非常合理地接受“不,我没有实现该功能,因为它存在问题X”。不过,我很可能很幸运。

    从另一个角度来看,我鼓励你站在他们的立场上思考这个问题。我将描述一个“假设的”经历

    要记住的一些事情:

    • 那家伙想做点什么 好
    • 程序员在这方面很糟糕 读心术。他们往往只知道 他们读到了什么
    • 他可能没有得到关于需要做什么(或不需要做什么)的完整指导
    • 他可能正在尽他所知的最大努力

    记住这一点,和他们谈谈。教他们。不需要大喊大叫或小便比赛。请记住,他们并不是故意让你的生活变得困难。

    我看到你问了很多关于如何与某些类型的开发人员打交道的问题。对你来说,这似乎是一条共同的线索。你一直在问如何改变你周围的人。如果这一直是你的问题,那么也许你就是问题所在

    现在我知道你问问题是为了学习如何与你觉得困难的人打交道,这很好,但是,你一直在问(并得到答案)如何改变人


    在我看来,你需要改变。与这些人合作,将代码更改为您想要的样子。和他们在一起。不要试图让他们这么做。就这么做吧,告诉他们你做了什么,为什么,并征求进一步改进的建议,互相学习。利用彼此的经验和优势。就我的2美分。

    坦白说,我认为这是一个政治问题,而不是编码问题。具体地说

  • 谁说这个人是“明星”?如果这是你在另一个问题中描述的同一个人,那么你已经有了答案:这个人不是“明星”
  • 然后你进入政治的其他影响

  • 谁声称这个人是明星?为什么你不能告诉那个人“这是垃圾代码