代码之家  ›  专栏  ›  技术社区  ›  ChaosPandion

我对我的问题的这一部分做了适当的评论吗?

  •  3
  • ChaosPandion  · 技术社区  · 14 年前

    我觉得这值得一个好的评论,但我得到的感觉,我所拥有的只是一个分心。

    1. 这值得评论吗?

    请注意,我使用的是一个规范性较差的应用程序。

    (   
        /* Remove Time Portion From ActivityDate */  
        DateAdd(Day, DateDiff(Day, 0, Activity.ActivityDate), 0) Not Between        
        /* Remove Time Portion From @MinimumDate Or SQL Server Min DateTime */   
        DateAdd(Day, DateDiff(Day, 0, Coalesce(@MinimumDate, '1753-01-01')), 0) And
        /* Remove Time Portion From @MaximumDate Or SQL Server Max DateTime */  
        DateAdd(Day, DateDiff(Day, 0, Coalesce(@MaximumDate, '9999-12-31')), 0) 
    )
    
    4 回复  |  直到 14 年前
        1
  •  1
  •   gbn    14 年前

    我会将dateadd/datediff包装在一个标量udf中,其中包含一个自注释名称,然后传入 Activity.ActivityDate Coalesce(@MinimumDate, '1753-01-01')) 作为参数

    所以你有这个:

    (   
        dbo.ufnGetDateOnly (Activity.ActivityDate) NOT BETWEEN        
             dbo.ufnGetDateOnly (COALESCE(@MinimumDate, '1753-01-01')) AND
             dbo.ufnGetDateOnly (COALESCE(@MaximumDate, '9999-12-31')) 
    )
    

    您还可以有一个“dateif null”参数,并在udf中处理COALESCE(如果它在SQL代码中足够常见的话)

    (   
        dbo.ufnGetDateOnly (Activity.ActivityDate, DEFAULT) NOT BETWEEN        
             dbo.ufnGetDateOnly (@MinimumDate, '1753-01-01') AND
             dbo.ufnGetDateOnly (@MaximumDate, '9999-12-31') 
    )
    

    现在很明显…不?

        2
  •  3
  •   Robert Greiner    14 年前

    我个人认为你不需要评论 removes X from Y increments X by Y

    也就是说,如果您觉得需要对代码的某个特定部分进行注释,那么我会尽量关注功能的意图和全局。例如,为什么事情是这样实现的?这样,下一个跟在你后面的人就有了一个战斗的机会,当他不得不做出改变的时候。

    例如,我知道您的代码片段在功能上做了什么,但我不知道它为什么存在,也不知道它与应用程序的其余部分有什么关系。一个可能的改进可能是对功能的解释,你可以给一些新代码的人,或者一些不在乎的人 怎样 已经实施了,但是 为什么? .

    编程就是交流 你越能清楚地把你的意图传达给其他程序员,你就越有可能成功。如果你能找到一种添加注释的方法来提高开发人员之间的交流质量,那就去吧。我认为,那些告诉你代码到底在做什么的评论会适得其反,最终会损害沟通。

        3
  •  0
  •   Brian Hooper    14 年前

    这些评论对我很有帮助,因为如果没有它们的话,我就不得不考虑这些行在做什么。虽然正如罗伯特格雷纳所说,你为什么要这样做也很好知道。

        4
  •  0
  •   sibidiba    14 年前

    • 约束、假设(空值?、线程安全?只读?)
    • 为什么是这样而不是别的(e、 架构决策,我们将使用这个XML解析,因为我们需要名称空间支持,而另一个不支持EBDIC编码)
    • 这在大局中处于什么位置?它是从哪里来的?
    • 模式(包括数据库约束、假设,例如转义?)
    • 影响(例如安全考虑、副作用)
    • 依赖项(例如库、头文件、软盘上的魔法锁文件)