

Elm Lens 0.3今天发布! 在此版本中,我介绍了设置面板。 通过打开Atom偏好设置,单击侧栏中的“包”,然后单击Elm Lens包上的“设置”按钮,可以进入Elm Lens的设置面板。
现在,如果您决定不使用Elm Lens标记,则可以关闭它们。 如果您希望标记的不透明性不如其余代码那么明显,还可以调整标记的不透明性。
此外,您可以使用Ctrl-L快速打开和关闭所有显示控件复选框。
此版本中还有其他一些改进。 那些曾经看到过奇怪的方形图标(应该是加载微调器和警告标志的人)现在应该正确地看到这些图标。 此外,来自不合格进口品的外部参照物现在也应正确计算。
但是,让我们来谈谈不合格的进口商品……
回到我早期的软件工程时代,我迷上了PHP的一项功能,我认为它非常酷。 我发现,只要您用new调用它的名称,就可以配置该语言以自动神奇地查找类文件。 这使我放弃了require在文件顶部为每个类依赖关系编写一个require语句。 我可以在任何需要的地方new任何东西,其余部分由PHP magic处理。
随着我获得更多经验,我得出了不可避免的结论:此功能使我的代码更糟。 不必考虑我的new以及在何处的便利,这使我倾向于依赖集群,而不太可能考虑我的分区策略。
Elm没有太多麻烦的PHP包,但是确实有依赖关系。 虽然Elm中没有魔术可以告诉编译器根据引用为您导入整个模块,但是有一种语法可以让您忽略要导入内容的规范。
而不是做:
import ModuleA exposing (ModuleA, blarg, frangle)
可以这样做:
import ModuleA exposing (..)
这将导入ModuleA中公开的所有内容。 从依赖关系的角度来看,这对您的代码不是很好。 这意味着,如果ModuleB以这种方式导入ModuleA,则可能是在导入不使用的符号。 如果我忘记了ModuleB以这种方式导入ModuleA,则可以为其添加大量公开函数,这将以非显而易见的方式增加与ModuleB的耦合。 它还会引起可读性问题。 为了弄清楚ModuleB中的哪些符号来自ModuleA,我要么注释掉导入并查看中断,要么必须扫描ModuleB。 最好是明确声明导入。
我希望Elm Lens向您显示有关依赖项的正确信息,而不管导入语句的结构如何。 但是,如果您明确声明依赖项,那么使用Elm Lens将获得更好的性能,并且,我相信,代码也会更好。 我发现该原则在任何具有导入语法的语言中都是正确的(这是绝大多数)。 显式导入总是最终会在键入时间以及某些时间上偿还其成本。