我是否正确评论了这条查询?

时间:2010-07-12 22:06:46

标签: sql-server

我觉得这应该是一个很好的评论,但我觉得我所拥有的仅仅是一种分心。

  1. 这值得发表评论吗?
  2. 如果是,可以改进此评论吗?
  3. 请注意,我正在使用规范化程度很低的应用程序。

    (   
        /* 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 个答案:

答案 0 :(得分:3)

就个人而言,我认为您不需要说removes X from Yincrements X by Y等的评论......

话虽这么说,如果你觉得你需要评论特定的代码部分,我会尝试着重于功能的意图和大局。例如,为什么事情以这种方式实施?这样,当你不得不做出改变时,接下来的那个人将会有一个战斗机会。

例如,我知道你的代码片段在功能上是什么,但我不知道为什么它存在或者它与应用程序的其余部分有什么关系。一个可能的改进可能是一个解释功能的解释,你可能会给某些新手代码的人,或者一个可能不关心如何实现它的人,但为什么

我总是要提醒自己编程正在沟通,你可以越清楚地向其他程序员传达你的意图,你就会越好。如果您能找到一种方法来添加注释,以提高开发人员之间的通信质量,那就去吧。我认为,那些能够准确告诉你代码正在做什么的评论会适得其反,最终会伤害沟通。

答案 1 :(得分:1)

我将dateadd / datediff包含在带有自我评论名称的标量udf中,然后传入Activity.ActivityDateCoalesce(@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')) 
)

你也可以有一个“date if 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 :(得分:0)

这些评论对我有帮助,因为如果他们不在那里,我将不得不考虑这些线路正在做什么。虽然罗伯特格雷纳说,为什么你这样做也很有用。

答案 3 :(得分:0)

记录您的工作。必须自我解释一行代码的作用。文件:

  • 主要角色是什么,实现了块的逻辑? (例如,一个函数,一个循环)
  • 约束,假设(空值?,线程安全?只读?)
  • 为什么会这样,而不是其他方式? (例如架构决策,我们将使用这个XML解析,因为我们需要名称空间支持,因为另一个不支持EBDIC编码)
  • 大局在哪里?它来自何处?
  • 架构(包括数据库约束,假设,例如转义?)
  • 含义(例如安全考虑,副作用)
  • 依赖关系(例如库,标题,软盘上的魔术锁文件)