首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过做来学习代码的缺点是什么?

通过做来学习代码的缺点是什么?
EN

Software Engineering用户
提问于 2020-06-24 03:49:41
回答 4查看 483关注 0票数 1

在编程方面,大家的共识似乎是边做边学,这似乎是给大多数初学者的建议。

初学者将如何学习如何编写有效的代码时,他们首先下潜?

EN

回答 4

Software Engineering用户

发布于 2020-06-24 06:27:54

初学者将如何学习如何编写有效的代码时,他们首先下潜?

初学者在学习编写可读的代码并将其展示给其他人时,将学习如何编写高效的代码。通常有人告诉他们没有人关心他们的效率问题。

新程序员有一个持续的问题,当他们最终得到一些工作,他们想继续玩它。只要他们能继续玩下去,他们就不必开始新的任务。他们想做得更好,而他们唯一能想到的更好的方法就是效率。除了实际的大O问题外,实际的n值很大,这通常是浪费时间。

在这个阶段,通常有很多东西可以使代码更好。但是,由于您是初学者,而且更重要的是,由于您编写了它,您很难判断需要将它变成可读的灵活代码(这是最好的一种更好的代码)。

初学者在编写代码后不久就可以向他人展示他们的代码,而他们仍然愿意重写它。随着实际问题的解决,这将提高代码的可读性和灵活性。一旦代码具有可读性,就更容易判断它的效率。它也更容易维护。这样做,初学者可以学习编写的代码是最有效的,这是必要的。

票数 6
EN

Software Engineering用户

发布于 2020-06-24 08:31:37

很少有代码需要有效率。假设您是需要对数组进行排序的2000万开发人员之一。他们中的19,999,999人不需要知道如何有效地做这件事,只需要知道一件事。

票数 3
EN

Software Engineering用户

发布于 2020-06-24 09:45:27

效率不是绝对的,它是相对的。

MethodA为例。我刚刚开发了这个。当你调用它时,它需要两秒钟才能完成。这有效率吗?答案很简单,你不能对此作出判断。

  • 如果这种方法把两个数字相加在一起,效率就很差。
  • 如果这种方法强制执行复杂的加密,效率是惊人的。

我之所以能够将这些案件判断为残忍/令人惊讶,是因为我将其与其他已知的做同样事情的尝试进行比较。

我们仍然不知道MethodA做什么,但我也创建了MethodB,它做同样的事情,但它可以在半秒内完成。尽管我们仍然不知道这两种方法都做了什么,但我们已经可以得出结论,MethodBMethodA更有效。

当我说某事是有效的,我的意思是它比以前的尝试更有效率。

这就引出了我的观点,来回答你的问题:早期的尝试。

你不会一开始就写高效的代码。如果您这样做了,您甚至不会知道它是有效的,因为您不会有一个效率较低的尝试比较它。

然而,一个优秀的开发人员在遇到他们在过去创建的低效代码并改进他们以前的方法时,会编写更高效的代码。这适用于自我创业者和训练有素的开发人员。无论你是如何开始你的职业生涯,自我改进是软件开发的必修课。

“那么,您如何才能发现哪些代码效率低下呢?”

正如我们所建立的那样,只有当看到同一事物的更有效版本时,您才知道某些东西是无效的。因此,如果您希望能够识别低效率,您需要广泛的实现知识,以便您能够掌握您自己的实现有多好。

还请注意,通过简单地发现不必要的逻辑,可以推断出一些效率低下的地方。举这两个例子:

代码语言:javascript
复制
public int Add(int a, int b)
{
     return a + b;
}

public int Add(int a, int b)
{
    return ((2*a + 2*b + 50) / 2) - 25;
}

它总是产生相同的结果,但第二个例子显然只是做一些额外的腿工作是不必要的。

Note__:实际上,我不确定编译器是否会自动发现和优化这个特定的示例,但是一般的问题仍然存在,因为有更复杂的例子,其中的优化对于开发人员来说是显而易见的,但编译器不容易识别。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/411902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档