代码完成规定您应该跳投码成一门语言,而不是代码在它。他们的意思是
不要将您的编程思想仅局限于语言自动支持的概念。最好的程序员考虑他们想要做什么,然后他们评估如何使用可供使用的编程工具来实现其目标。(第34.4章)
不管手头语言的优点和缺点如何,这是否会导致在每种语言中使用一种编程风格?
或者,以更易回答的格式提出问题:
您是否建议人们应该尝试使用一种语言的特征尽可能整齐地编码一个问题,还是应该整体上搜索最优雅的解决方案,即使那意味着您需要实现本机不存在的可能尴尬的构造用自己的语言?
代码完成规定您应该跳投码成一门语言,而不是代码在它。他们的意思是
不要将您的编程思想仅局限于语言自动支持的概念。最好的程序员考虑他们想要做什么,然后他们评估如何使用可供使用的编程工具来实现其目标。(第34.4章)
不管手头语言的优点和缺点如何,这是否会导致在每种语言中使用一种编程风格?
或者,以更易回答的格式提出问题:
您是否建议人们应该尝试使用一种语言的特征尽可能整齐地编码一个问题,还是应该整体上搜索最优雅的解决方案,即使那意味着您需要实现本机不存在的可能尴尬的构造用自己的语言?
Answers:
有一个更好的方法:根本不用理会您可悲的固定编程语言。使用您刚发明的语言对问题进行编码,该语言是从相关问题领域的术语衍生而来的,并尽可能自然地对其进行编码,然后才考虑实现这种新的编程语言或将代码笨拙地限制在现有语言。
我相信正确的答案,而本书所打算的是:
一个人应该尝试用一种语言的细节尽可能整齐地编码一个人的问题
通过编程为一种语言,我一直认为这是使用语言正常样式之外的技术,否则会带来好处。这是在所有语言中以一种风格写作的主要区别。
例如,学习Haskell大大提高了我使用高阶函数的技能。现在,使用c#进行编程时,我会更频繁地使用各种IEnumerable
方法,例如Select
,与使用for循环相比,使用这些方法可以使代码更简洁。Func<int, int>
由于我有haskell的经验,我也倾向于更频繁地使用传递和使用函数(即)。由于这个原因,我对继承的使用有所下降,并且在大多数情况下,结果是更简单的代码。
但是,我没有在C#中使用诸如monads或代数数据类型的概念。这是因为两者在C#中都不是可清楚表示的,并且以许多晦涩难懂的方式带来的收益也很小。
因此,我使用语言工具来充分发挥我所拥有的技能。我相信这是编程到语言中。