Ai-je correctement commenté cette partie de ma requête?

J'ai l'printing que cela mérite un bon commentaire mais j'ai l'printing que ce que j'ai n'est qu'une distraction.

  1. Est-ce que cela mérite un commentaire?
  2. Si oui, ce commentaire peut-il être amélioré?

Veuillez noter que je travaille avec une application mal normalisée.

( /* 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) ) 

J'envelopper le dateadd / datediff dans un file uDF scalaire avec un nom auto-commentant, puis passer dans Activity.ActivityDate ou Coalesce(@MinimumDate, '1753-01-01')) comme parameters

Donc vous auriez ceci:

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

Vous pouvez aussi avoir un paramètre "date if null" et traiter avec COALESCE dans le file udf s'il est assez courant dans le code SQL

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

Maintenant c'est évident … non?

Personnellement, je pense que vous n'avez pas besoin de commentaires qui disent: removes X from Y ou increments X by Y etc …

Cela étant dit, si vous pensez que vous avez besoin de commenter une section particulière du code, j'essayerais de me concentrer sur l'intention et la grande image de la fonctionnalité. Par exemple, pourquoi les choses ont-elles été mises en œuvre de cette façon? De cette façon, le prochain gars qui se présente derrière vous aura une chance de se battre quand il doit faire des changements.

Par exemple, je sais ce que votre extrait de code fait fonctionnellement, mais je ne sais pas pourquoi il est là ou comment il se rapporte au rest de l'application. Une amélioration possible pourrait être quelque chose comme une explication de la fonctionnalité que vous donneriez à quelqu'un de nouveau au code, ou quelqu'un qui pourrait ne pas se soucier de la façon dont il est implémenté, mais pourquoi .

Je dois toujours me callbacker que la programmation communique et plus clairement vous pouvez communiquer votre intention à d'autres programmeurs, mieux vous serez. Si vous pouvez find un moyen d'append des commentaires qui améliore la qualité de la communication entre les développeurs, alors allez-y. Je dirais que les commentaires qui vous disent exactement ce que fait le code sont contre-productifs et nuisent à la communication à la fin.

Les commentaires me sont utiles, car j'aurais dû réfléchir à ce que font ces lignes si elles n'étaient pas là. Bien que, comme le dit Robert Greiner, pourquoi vous faites cela serait également bon à savoir.

Ne documentez pas ce que vous faites. Cela doit être explicite ce qu'une seule ligne de code fait. Document:

  • Quel est le rôle principal, la logique mise en œuvre d'un bloc? (par exemple une fonction, une boucle)
  • Contraintes, hypothèses (valeur nulle, thread sûr? Lecture seule?)
  • Pourquoi est-ce comme ça et pas autrement? (par exemple, les décisions architecturales, nous allons utiliser cette parsing XML car nous avons besoin d'un support d'espace de noms et parce que l'autre ne prend pas en charge l'enencoding EBDIC)
  • Où est-ce dans la grande image? D'où vient-il?
  • Schéma (incluant les contraintes de DB, les hypothèses, par exemple échappé?)
  • Implications (par exemple, considérations de security, effets secondaires)
  • Dépendances (par exemple, bibliothèques, en-têtes, un file de locking magique sur une disquette)