237*_*371 7 language-agnostic coding-style conventions
我经常发现很难决定并且不一致.我可以遵循一些规则吗?
例如:
def remove_except(haystack, needle, exclude_value):
for key in hackstack:
if key in needle and haystack[key] != exclude_value:
hackstack.pop(key)
Run Code Online (Sandbox Code Playgroud)
可能很容易:
def remove_except(needle, exclude_value, haystack):
for key in hackstack:
if key in needle and haystack[key] != exclude_value:
hackstack.pop(key)
Run Code Online (Sandbox Code Playgroud)
这不是一个完美的例子,因为我倾向于将变量作为第一个参数进行修改,例如haystack,这甚至可能是一个惯例,但除此之外,我不确定该怎么做.
我对比Python更多的语言感兴趣.
唯一的规则是保持一致。这不仅意味着您定义的API 之间和内部保持一致,而且还意味着与环境中常用的任何 API 保持一致。请注意,这可能意味着您在一种环境中的做法与在另一种环境中的做法不同。尝试融入。
现在,使用 Python 和 JavaScript,您可以使用面向对象至少将干草堆排除在外,因为干草堆将是(或至少可以是)您正在操作的对象,因此您如何做到这一点将取决于由语言决定(例如,delete haystack[needle];[JavaScript 用于从对象中删除属性] 或del haystack[needle][Python 用于删除字典条目])。C 不是面向对象的(C++、D、Objective-C 和其他几个派生语言是面向对象的),因此您需要寻找那里的约定。
主观上来说,根据我的经验,haystack通常是第一位的,但这可能只是我的经验。同样,我的主观意见是, 是exclude_value最后一件事(所以haystack,,,,needle)exclude_value,因为还有其他操作需要haystack,,,needle——something_else 但这只是一个意见。