标签: code-readability

如何在研究报告中格式化代码

我目前正在撰写正式的研究报告,我将在此报告中包含代码.

问题:是否有可接受的方式在研究报告中显示代码?我在考虑字体,间距等问题,以及代码是应该在文档内部还是在附录中显示.

代码将是JavaScript和PHP.代码的所有部分都不会超过25行(因此它们仅仅是片段).将有大约六个片段.每个片段都有几个段落,解释代码中发生的事情,并讨论其优缺点.

我没有与提交报告的机构联系,也没有关于如何格式化代码的公布指南(请不要质疑这些要点).

coding-style readability report code-readability

8
推荐指数
1
解决办法
1万
查看次数

你见过的一个相对知名的图书馆最丑陋的API,以及为什么以及如何改进?

我一直在研究Lucene 2.9特别是重做令牌流API之间的差异,它只是发生在我身上它特别难看,相比旧的只是返回一个新的或重新填充给定的值,如果你重用说Token.

我没有做任何分析,但似乎使用MAP来存储属性并不是那么有效,并且更容易创建一个包含值等的新值类型.TokenStream和Attribute的东西看起来像对象池,这几乎是不必要的这些天来,对于简单的值类型,如文本标记.

coding-style code-readability

7
推荐指数
3
解决办法
1744
查看次数

如何避免换行填充?

我对HTML的最大抱怨是换行符在元素之间增加了一点点空间.(jsFiddle.)

这可能会破坏子元素大小完全适合父母的布局.

我在某处读到你可以删除这个隐式填充 - 同时仍然保持代码有些清晰 - 通过使用这样的注释:

<!--
--><div>Foo</div><!--
--><div>Bar</div><!--
--><div>And so on...</div><!--
-->
Run Code Online (Sandbox Code Playgroud)

这有效,但我觉得必须有一个更好的解决方案.还有什么方法可以解决断线填充问题?

html layout code-formatting code-readability

7
推荐指数
1
解决办法
1925
查看次数

管道单个对象并在没有For-EachObject的情况下处理它

原始问题

我管道一个字符串并处理For-EachObject如下:

 "Test" | % { $_.Substring(0,1) }
Run Code Online (Sandbox Code Playgroud)

使用单个管道项目似乎是错误的For-EachObject,部分原因是它对未来的代码维护者有误导性.但是,我不知道任何其他方式来捕捉字符串,同时说"它只是一个单项".例如,这不起作用.

"Test" | $_.Substring(0,1)
"Test" | { $_.Substring(0,1) }
Run Code Online (Sandbox Code Playgroud)

如何处理单个对象,同时表明我只期望一个?

编辑:添加实际用例

以上是我实际想要完成的简化版本.我得到了维基百科文章的第一段,它是将结果保存到文件的更大函数的一部分.

curl "www.wikipedia.org/wiki/Hope,_British_Columbia" | 
    select -expand allelements | 
    ? { $_.id -eq "mw-content-text" } | 
    select -expand innerHTML | 
    % { 
        $i = $_.IndexOf("<P>"); 
        $j = $_.IndexOf("</P>"); 
        $_.Substring($i, $j - $i) -replace '<[^>]*>'
     } 
Run Code Online (Sandbox Code Playgroud)

需要处理单个对象的部分遵循select -expand innerHtml表达式.管道是我的首选方式,因为在curl部件周围放置多个括号似乎很难看.

别名

  • curlInvoke-WebRequest
  • selectSelect-Object
  • -expandExplandProperty
  • ?Where-Object
  • % …

powershell code-readability

7
推荐指数
1
解决办法
764
查看次数

使用#include将大块重复代码放入单独的文件中是否正常和/或正常?

我一直在解剖一些代码,我看到了一些我以前从未见过的东西,我想知道这是不是一个好/坏的做法,如果这是正常的.

基本上有一个头文件,带有类定义,用于具有一堆(大约90个)纯虚函数的类.这些虚函数有很多,所以它们都放在一个单独的文件中,然后包含在类定义中,如下所示:

foo.h中

class Foo
{
public:
    virtual ~Foo() {};
    #define FOO_VIRTUAL_IMPL = 0
    #include "Foo_prototypes.h"
};
Run Code Online (Sandbox Code Playgroud)

Foo_prototypes.h

#if ! defined(FOO_VIRTUAL_IMPL)
# define FOO_VIRTUAL_IMPL
#endif

virtual void doSomething() FOO_VIRTUAL_IMPL;

virtual void doSomethingElse() FOO_VIRTUAL_IMPL;
Run Code Online (Sandbox Code Playgroud)

使用定义宏也是常见的(即允许相同的包含文件用于纯虚拟和普通虚拟功能)?是经常使用这种东西,还是只是为了节省一点时间/精力的小黑客?

我想这些东西让代码看起来对我来说不太可读,但可能只是因为我不习惯这些技巧,一旦我习惯了它们,我就会更好地阅读这种代码.

有问题的代码是Interactive Brokers的C++ API,如果有人关心在上下文中看到它.相关文件是:EWrapper.h和TestCppClient.h以及EWrapper_prototypes.h.

c++ code-readability

7
推荐指数
3
解决办法
279
查看次数

处理 TypeScript 中类型改变的副作用

这更多是一个关于如何处理具有类型改变副作用的函数的开放问题TypeScript。我知道并且强烈同意这样的观点:函数应该尽可能减少副作用(如果有的话)。

但有时,需要就地更改对象(及其类型) ,而不是使用另一个静态类型创建它的新副本。我最常遇到的原因是可读性效率减少行数

由于我最初的示例过于复杂且过于复杂(希望如此),这里是一个非常基本的示例:

type KeyList = 'list' | 'of' | 'some' | 'keys';

// Original type (e.g. loaded from a JSON file)
interface Mappable {
    source: { [K in KeyList]: SomeNestedObject },
    sourceOrder: KeyList[];
}

// Mapped Type (mapped for easier access)
interface Mapped {
    source: { [K in KeyList]: SomeNestedObject },
    sourceOrder: SomeDeepObject[];
}

// What I have to do to keep suggestions and strict types all …
Run Code Online (Sandbox Code Playgroud)

javascript side-effects code-readability typescript typescript-typings

7
推荐指数
1
解决办法
1303
查看次数

如何在Visual Studio IDE C#中隐藏跟踪代码?

当我开始在我的代码中添加更多跟踪时,我意识到它增加了很多混乱.我知道Visual Studio允许你隐藏和显示代码,但是,我希望能够将组代码转换为"跟踪"代码,然后隐藏它并随意显示,因为我正在阅读代码.我想它可以按文件或每个类或每个函数执行此操作.

有没有办法做到这一点?你们做什么的?

添加一些说明

隐藏当前功能允许您执行此操作,除非隐藏代码时,您无法判断其是否跟踪.您也不能说"隐藏所有跟踪代码"和"显示所有跟踪代码",这在阅读函数时非常有用,具体取决于您要执行的操作.

c# trace code-readability visual-studio

6
推荐指数
1
解决办法
906
查看次数

优化树状控制结构

我必须根据用户输入创建报告.用户回答一个问题,然后根据答案我在树状结构中向左或向右走,并提出一个新问题.一些节点将有相同的问题,但不同的孩子.我不确定在代码可读性方面最好的方法是什么?

我想避免巨大的控制结构,因为它将是非常难以理解的,像这样:

if() {
    if() {
        if() {
            if() {
                ... 
            }
        }
        else {
            if() {
                ...
            }
        }
    }
    else {
        ...
    }
}
else {
    if() {
        if() {
            if() {
                ...
            }
        }
        else {
            if () {
                ...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来处理它?这是我树如何看的图像

在此输入图像描述

javascript php algorithm code-readability

6
推荐指数
1
解决办法
133
查看次数

如何在python中的多行中编写长算术表达式?

我有一个很长的表达,它不适合我的屏幕,我想写几行。

new_matrix[row][element] =  old_matrix[top_i][top_j]+old_matrix[index_i][element]+old_matrix[row][index_j]+old_matrix[row][index_j]
Run Code Online (Sandbox Code Playgroud)

如果我只是换行,Python 会给我“缩进”错误。有没有办法在屏幕上“适应”长表达?

python newline code-readability

6
推荐指数
1
解决办法
4452
查看次数

Java中通用括号之间没有空格的推理

查看Checkstyle 文档中的GenericWhitespaceCheck

左尖括号 ( <):

  • 仅在通用方法定义中应以空格开头。
  • 在方法名称或类型名称之前不应以空格开头。
  • 在所有情况下都不应该跟有空格。

右尖括号 ( >):

  • 在所有情况下都不应该以空格开头。
  • 在几乎所有情况下都应该跟有空格,除了菱形运算符和方法名称之前。

我不确定我是否完全理解为什么后面<不应该跟一个空格以及为什么>前面不应该跟一个空格的原因。

换句话说,为什么Map<String>公约结束了Map < String >

这仅仅是因为随着参数数量和深度的增加,没有空格的版本更具可读性。

比如,Map<String, List<String>>比,更易读Map < String, List < String > >

另外作为一个一般问题,是否有一些存储库/指南可以解释 Checkstyle 约定背后的原因?

java whitespace readability checkstyle code-readability

6
推荐指数
2
解决办法
661
查看次数