Questions tagged «readability»

可读性衡量代码易于阅读和理解。

5
纯功能的解决方案能否像当务之急一样干净?
我在Python中有一个练习,如下所示: 多项式作为系数的元组给出,因此幂由索引确定,例如:(9,7,5)表示9 + 7 * x + 5 * x ^ 2 编写一个函数以计算给定x的值 由于我最近从事函数式编程,所以我写了 def evaluate1(poly, x): coeff = 0 power = 1 return reduce(lambda accu,pair : accu + pair[coeff] * x**pair[power], map(lambda x,y:(x,y), poly, range(len(poly))), 0) 我认为这不可读,所以我写了 def evaluate2(poly, x): power = 0 result = 1 return reduce(lambda accu,coeff …

3
依靠隐式参数转换是否被认为是危险的?
C ++具有一项功能(我无法弄清楚它的正确名称),如果参数类型不是期望的参数类型,它将自动调用参数类型的匹配构造函数。 一个非常基本的示例就是调用一个std::string带const char*参数的函数。编译器将自动生成代码以调用适当的std::string构造函数。 我想知道,它是否像我认为的那样对可读性不利? 这是一个例子: class Texture { public: Texture(const std::string& imageFile); }; class Renderer { public: void Draw(const Texture& texture); }; Renderer renderer; std::string path = "foo.png"; renderer.Draw(path); 这样好吗 还是太过分了?如果我不应该这样做,我可以以某种方式让Clang或GCC发出警告吗?

5
是否可以使表示计算的长代码更易于阅读?
长方法通常被认为是不好的,但是在我的代码中,我有一些难以理解的长方法(超过50行)。我很难使这些方法更容易阅读,因为里面的一条语句已经超过了50行,而且难以理解的一条语句是使用ORM建立数据库查询来完成某些特定的工作在方法名称上明确指出。该语句之所以这么长是因为它在多个列上联接,应用多个wheres并选择多个不同的列以形成所需的文档化输出格式。 这样难读的代码是否被视为错误代码?同样,如果我为复杂的算法编写代码,导致难以理解的代码包装在一个清晰命名的方法中,那么该代码是否是错误代码?

3
在没有可处理的情况下,“使用”是否合适?
在C#中,using语句用于确定性地配置资源,而无需等待垃圾回收器。例如,它可以用于: 处置SQL命令或连接, 关闭流,释放基础源,例如文件, 免费的GDI +元素, 等等 我注意到,using在没有什么要处理的情况下,这种用法越来越多,但是对于调用者来说,编写一个using块而不是两个单独的命令更方便。 例子: 由Stack Overflow团队编写的MiniProfilerusing用于表示要分析的块: using (profiler.Step("Name goes here")) { this.DoSomethingUseful(i - 1); } 一种替代方法是具有两个块: var p = profiler.Start("Name goes here"); this.DoSomethingUseful(i - 1); profiler.Stop(p); 另一种方法是使用动作: profiler.Step("Name goes here", () => this.DoSomethingUseful(i - 1)); ASP.NET MVC还选择了using以下形式: <% using (Html.BeginForm()) { %> <label for="firstName">Name:</label> <%= Html.TextBox("name")%> …

2
S表达式的可读性
简而言之,对于那些不知道的人,Lisp函数/操作符/构造都统一地这样称呼: (function arg0 arg1 ... argN) 那么用类似C的语言表达的是 if (a > b && foo(param)) 变成了Lisp sexp (if (and (> a b) (foo param))) 。随着事情变得更加真实/复杂,对我来说,它们对应的s表达式也是如此。 我知道这很可能是一个主观的问题,但是-对于许多Lisp黑客来说,这个烦恼总是必须解决的吗? 还是迟早会最习惯这种(缺乏)语法的? 无论如何,为了提高可读性(尤其是从长远来看),添加分界线(大多数情况下通常不会添加C等效项)是个好主意吗?任何其他建议都将受到欢迎。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.