用 F#在视觉上诚实

用 F#在视觉上诚实

原文:https://medium.com/hackernoon/being-visually-honest-with-f-d22208bda3c

F#的 pipes 操作器为什么这么牛逼

在 2014 年的 Build Stuff 上, Kevlin Henney 在他的“许多程序员的七个无效编码习惯”演讲中,描述了在代码中缺乏视觉诚实的情况,例如:

public int howNotToLayoutMethodHeader(int firstArgument,
    string secondArgument)

关于视觉诚实的含义,他引用了丹尼尔·希金博瑟姆优秀的Clean Up Your mass网站上的一些话:

回答“什么是干净的设计?”最简洁地说:一个干净的设计是一个支持视觉思维的设计,因此人们可以用最少的有意识的努力来满足他们的信息需求

你通过安排设计元素的相互关系来传达信息。查看你的设计的人会立刻理解这些信息,即使不是有意识的

如果视觉关系明显而准确,这很好,但如果不是这样,你的观众会感到困惑。他们必须仔细检查你的作品,在不同的部分之间来来回回,以确保他们理解。

这些引语谈论的是信息的布局,以便它们的视觉关系是明显和准确的。

所以如果你用这样一种方式来布局你的方法参数,它们的视觉关系是不准确的,而且你是有目的地这么做的,那么你实际上是不诚实的。

我坐在那里,终于明白了为什么 F# pipes 这么牛逼。我一直知道它会使代码更干净、更可读,这很直观,但我一直无法找到合适的词来解释为什么——能够用最少的有意识的努力来理解一些东西的麻烦在于,你的有意识的头脑无法解释它是如何理解它的。

不再是了,现在我终于明白了。

当我们阅读一篇普通的英语文章时,我们从左到右,然后从上到下阅读。这种惯例控制着我们阅读时接收到的信息流,所以当我们为人们展示信息时,我们按照从左到右,然后从上到下的顺序展示。

但是代码呢?

当涉及到编写嵌套函数调用时,不知何故这种信息流被颠倒了!

借助 F#的管道(顺便说一下,Elm 和 Elixir 都采用了这种管道),我们终于设法恢复了一些理智,并以一种与我们消费任何其他文本信息的方式相匹配的方式呈现了函数调用序列。

就在你眼前的视觉诚实!

链接

黑客中午是黑客如何开始他们的下午。我们是 AMI 家庭的一员。我们现在接受投稿并乐意讨论广告&赞助机会。

如果你喜欢这个故事,我们推荐你阅读我们的最新科技故事趋势科技故事。直到下一次,不要把世界的现实想当然!


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除