Sql server 我是否正确地评论了我的问题?

Sql server 我是否正确地评论了我的问题?,sql-server,Sql Server,我觉得这值得一提,但我觉得我所拥有的只是一种分散注意力的东西 这值得评论吗 如果是的话,这个评论可以改进吗 请注意,我使用的是一个规范性较差的应用程序 就个人而言,我认为您不需要这样的注释,即从Y中删除X或按Y递增X等等 话虽如此,如果您觉得需要对代码的某一部分进行注释,我会尝试将重点放在功能的意图和全局上。比如说,为什么要这样实施?这样,下一个跟在你后面的人就有了一个战斗的机会,当他不得不做出改变的时候 例如,我知道您的代码片段在功能上做了什么,但我不知道它为什么存在,也不知道它与应用程序的其

我觉得这值得一提,但我觉得我所拥有的只是一种分散注意力的东西

  • 这值得评论吗
  • 如果是的话,这个评论可以改进吗
  • 请注意,我使用的是一个规范性较差的应用程序


    就个人而言,我认为您不需要这样的注释,即
    从Y中删除X
    按Y递增X
    等等

    话虽如此,如果您觉得需要对代码的某一部分进行注释,我会尝试将重点放在功能的意图和全局上。比如说,为什么要这样实施?这样,下一个跟在你后面的人就有了一个战斗的机会,当他不得不做出改变的时候

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


    我总是要提醒自己,编程就是交流,你越能清楚地将你的意图传达给其他程序员,你的境况就越好。如果你能找到一种添加注释的方法来提高开发人员之间的沟通质量,那么就去做吧。我认为,那些确切地告诉你代码在做什么的注释会适得其反,最终会损害沟通。

    这些注释对我很有帮助,因为如果没有这些行,我不得不考虑它们在做什么。虽然正如Robert Greiner所说,您为什么要这样做也很好。

    我会将dateadd/datediff包装在一个标量udf中,并使用一个自注释名称,然后将
    Activity.ActivityDate
    合并(@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') 
    )
    
    现在很明显……不?

    不做记录你所做的。一行代码的作用必须是不言自明的。文件:

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

    如果我使用的是你的典型语言,那么这样的事情很明显。要考虑的一件事是处理大结果集时性能相当大。@一个标量的UDF既不在这里,也不在那里,即使对于大的结果集也是如此。在这种情况下,每行只解析Activity.ActivityDate。我倾向于在查询之前计算最小/最大值,并使用局部变量……好的,我如何解释看似神奇的空替换值。如果SQL Server有某种我可以使用的功能,那就太好了。类似于
    MaxValue(DateTime)
    。然后我又可以把它包装成一个函数。@ChaosPandion:的确。。。你在哪里取得平衡?如果必须在整个过程中重复coalesce,也可以使用dbo.ufngetMinimumDate之类的函数……这就是方法。坦白说,我讨厌评论。你可能是最好的(如果这是在WHERE子句中)修改此项,使@MinimumDate变为“该日期的午夜,@MaximumDate变为“第二天的午夜”,然后执行Activity.ActivityDate<@MinimumDate或Activity.ActivityDate>=@MaximumDate-如果你在ActivityDate上有一个索引,那么这将给查询优化器一个战斗的机会。@Will-现在这是个好主意。
    (   
        dbo.ufnGetDateOnly (Activity.ActivityDate, DEFAULT) NOT BETWEEN        
             dbo.ufnGetDateOnly (@MinimumDate, '1753-01-01') AND
             dbo.ufnGetDateOnly (@MaximumDate, '9999-12-31') 
    )