Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一个C语句中封装大量逻辑的利弊是什么? 。。。。 如果(我_C_Coding Style - Fatal编程技术网

在一个C语句中封装大量逻辑的利弊是什么? 。。。。 如果(我

在一个C语句中封装大量逻辑的利弊是什么? 。。。。 如果(我,c,coding-style,C,Coding Style,这不是很多逻辑,但它已经是一个很好的例子,说明了为什么不应该这样做:它导致了难以理解和调试的代码;这很像是用多个想法包装一个句子,这些想法可能是相关的,但不太相关,它们不应该出现在自己的句子中——在这两种情况下,都是潜在的问题在于,在头脑中记住一个简单的想法比处理几个相互竞争的想法要容易得多,即使这些想法在某种程度上是互补的 简单更好 让我们看一下有问题的特定代码: .... if (i<lim -1 && (c=getchar()) != '\n' &&

这不是很多逻辑,但它已经是一个很好的例子,说明了为什么不应该这样做:它导致了难以理解和调试的代码;这很像是用多个想法包装一个句子,这些想法可能是相关的,但不太相关,它们不应该出现在自己的句子中——在这两种情况下,都是潜在的问题在于,在头脑中记住一个简单的想法比处理几个相互竞争的想法要容易得多,即使这些想法在某种程度上是互补的

简单更好

让我们看一下有问题的特定代码:

....
if (i<lim -1 && (c=getchar()) != '\n' && c!=EOF))
{
    ....
}
....
我不确定这会有多大帮助。就我个人而言,我会选择这样的方式:

if (i<lim -1) {
    if (c=getchar() != '\n') {
        if (c!=EOF) {
            ...
if((i

这是相同的代码,但排列方式使阅读更容易。看着它,你很容易对自己说:“如果以下三件事都是真的……”,并且很容易从这三个条件中挑出每一个。

我不同意@Caleb的答案。这段代码非常简单,几乎没有逻辑。有人从输入缓冲区读取,直到达到缓冲区限制或没有更多字符可读。这段代码很公平,但没有什么可讨论的


所以,忘了那段代码。

属于代码审查。无论如何,基于意见。我是C新手,我想知道在下面的stlye中编写相同的代码是否会有所不同。(这段最初的代码似乎更容易理解understand@user2582265这并不特定于C或任何其他语言,它们都使用分组符号,如
()
{}
以类似的方式。只要继续写下去,做你觉得最舒服的事情。太多的分组符号会淡化代码,但太少,你看不到什么与什么有关。你能给我们一个例子,你将如何重新构造该语句吗?对我来说,它唯一缺少的是一些适当的括号,使它更容易阅读,但如果只有在满足3个条件的情况下才会发生某些事情,您会如何在代码中编写这些内容?@junix我以为我刚刚做到了?请看下面的部分:就个人而言,我会选择……哦,对不起,我的屏幕上仍然有您的帖子的旧版本:-),现在我同意了。
if (i<lim -1) {
    if (c=getchar() != '\n') {
        if (c!=EOF) {
            ...
if (( i < lim-1 ) &&
    ( c=getchar() != '\n' ) &&
    ( c != EOF ))
{ ... }