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编码)
- 这在大局中处于什么位置?它是从哪里来的
- 模式(包括数据库约束、假设,例如转义?)
- 影响(例如安全考虑、副作用)
- 依赖项(例如库、标题、软盘上的魔术锁文件)
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')
)