如何在注释中描述数学?

7

正如问题所述...

一个等式在数学符号形式下可能比在代码中更有意义。能够在注释中使用数学符号可以提高我项目的可读性。

顺便说一句,这是在.NET中。

9个回答

11

我只是使用多行来完成它:

// Work out average as:  sum (values)
//                      --------------
//                      count (values)
//
// and distance between points as:
//           _______________________
//          /         2            2
//    d = \/ (x1 - x0)  + (y1 - y0)
//
// and the following function:
//
//             3     2   
//    f(x) = ax  + bx  + cx + d

完全不需要使用任何魔法。难道你不喜欢ASCII艺术吗?


我必须认为大部分值得记录的数学内容(例如相对不常见和复杂的内容)在 ASCII 艺术中表达会很麻烦。 - Steve S

6

跟随 @pax 的建议,使用 ASCII 艺术/纯文本来呈现您的方程式(顺便点赞 +1):

以下是数学相关字符的快捷键列表:

°(度)- Alt+0176

±(正负号)- Alt+0177

²(平方)- Alt+0178

³(立方)- Alt+0179

¼(1/4)- Alt+0188

½(1/2)- Alt+0189

¾(3/4)- Alt+0190


6

我使用LaTeX:如果它很简单,你可以直接看到它;如果它很复杂,只需将其剪切并粘贴到最近的WordPress窗口中,大多数情况下它们会正确解析。


我总是离 LaTeX 编译器不远,它有一种简洁的语法,可以轻松编译成非常易读的表达式。 - Adam Jaskiewicz

4

对于普通的注释,我通常使用LaTeX或Word的语法。但通常是Word,因为例如β比\beta更易读。由于我的源文件通常是Unicode,这并不是问题。此外,我不喜欢在所有内容周围使用太多大括号 :-)

有时我对Javadoc感到厌倦,并且使用大量HTML使公式在Javadoc中显示得漂亮,但这并不有助于源代码的可读性(并且利用了Javadoc 构建到HTML,.NET就没那么幸运了)。

我会将Pax的示例编写成以下形式:

// Work out average as:
//   ∑(values)/|values|
// and distance between points as:
//   d = √( (x_1 - x_0)²  + (y_1 - y_0)² )
// and the following function:
//   f(x) = ax³  + bx²  + cx + d

我很少使用Unicode下标,因为并不是每个字体都支持它,尤其是适合编程的字体 :)


顺便说一句,现在在LaTeX中使用β是完全没有问题的 - 引擎称为XeTeX,并且包含在大多数TeX发行版(TeX Live,MiKTeX等)中。 - ShreevatsaR
我知道XeTeX,对于普通文本,您肯定可以包含字体提供的任何内容,但我不知道XeTeX如何处理数学...该死,TeX源代码已经足够复杂了,第一个支持Unicode的TeX出现在本千年...大约在Unicode定义之后十年。尽管如此,在LaTeX中的数学公式对我来说有太多的大括号:-)。请记住,LaTeX中的数学公式由十几种不同的字体组成。看看Word如何处理数学,似乎很难从没有大量准备的字体中获得良好的数学输出。 - Joey

3

我本来想在Matt的文章下发表评论,但我的声望太低了。我曾经为LaTex做过类似的事情。这是一个Sandcastle构建组件,它解析嵌入XML注释中的LaTeX并创建图像,将其添加回文档中。它是mimeTeX的简单包装器。你可以在以下链接中查看alpha代码:http://github.com/cuda/latex-sandcastle/


这将是值得铭记的事情...不错的举措。在那之前,我会采用Pax的解决方案... - Bertvan

2
“你知道吗,这将是Visual Studio可扩展性的一个很好的应用,ScottGu在上次PDC展示了它(他编写了一个MEF插件以不同样式显示注释)。”
“你可以使用MathML编写数学注释,然后编写一个解析标记并像正确方程式一样显示它的插件。”
“这更像是一个天方夜谭的评论,而不是对你问题的真正回答,但我想发帖让人们思考。也许有一天会有人做到!:)”

1
为了使数学公式的ASCII渲染更加容易,可以使用asciiTeX。 asciiTeX接受LaTeX风格的方程式,并以ASCII艺术形式打印出来。

1

对我来说,理解复杂的数学问题最简单的方法是插入一些实际数字并跟随其过程。仅仅阅读它的工作原理是不够的,除非我只是在提醒自己它是做什么的。

使用Nunit测试将是提供如何使用复杂数学问题的实际示例的理想方式。也许只需使用注释指出他们可以浏览的单元测试以及在哪里找到它们。


0

记住你的受众是谁。评论必须对你几个月后和你(现在和未来的)团队成员有意义。因此,如果数学符号对你们所有人来说都非常易懂,那么这可能没问题;但是,由于我无法知道谁会阅读该评论,我建议添加文本表示或描述。


这是正确的,但即使是描述简单的内容,由于文本的原因可能会变得比必要的更加复杂。在正常的数学语法中看到某些东西可以让您一次性地感受到该方法的美妙之处。(如果需要,可以添加一些文本来澄清) - Bertvan
是的,我同意。但我只是想指出有时候一点文字可以帮助;通常数学符号更好地描述了函数执行的内容,而一些文字可以帮助澄清为什么作者选择以那种方式做这件事情。不过,在阅读了其他一些回答之后,我感觉自己可能错过了问题的重点。抱歉。 - M.Turrini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接