I'm not going to do it for you, but what would I think about doing when I change the code?
要改变代码应该做什么呢?,我不会帮你们做这些,但是我在改编代码的时候会想什么呢?
Chapters 17 through 26 then are a block of material that's referred to as the "Holiness code" because of its special emphasis on holiness.
7章到26章是一块,被称为“神圣的代码“的内容“,因为它侧重于神圣。
And in particular, I can then ask the following question, which is, what's different between those two pieces of code?
是有个明显的模式的,我特别要问如下的问题,这两块代码的,不同之处在哪儿?
I was being a little lazy on Wednesday in the interest of simplifying the code as much as possible.
在周三我在那个网站上尽可能地,简化代码的时候,我有点偷懒。
What we will distribute for most lectures is a handout that's mostly code examples that we're going to do.
我们在大多课堂上会散发一些,印着我们要做的,代码范例的资料。
Right. If you look at the rest of that code, gee, it looks a lot like what I had elsewhere.
好了如果你看看剩下的代码,天呐,看上去就像我在别的地方写过的。
I've read through the same thing twenty times and I've missed something obvious. Someone who's never seen it before looks at and says, did you really mean to do this?
但是它们有一双旁观者之眼,我把同一段代码读上20遍,都会漏掉一些很明显的错误,从没看过这段代码的人会告诉我?
We could certainly implement this much more efficiently by just writing this one line of code, but, again, the key here is to take this step toward decomposing our code into chunks of code.
我们可以写这一行代码,使代码的执行更有效率,但是,这个关键字用来把我们的代码分解,成一段段的。
And in the process of tidying it up and making it prettier, I'll often by accident find the bug.
让我的程序更漂亮些,在这个清理美化代码的过程中,我常常无意中发现我的错误。
I'd really like to have that modularity that says, I'm only going to get access to the values, not by calling their names, but by calling some specific method to get access to their names.
这样我们就丢掉了代码的模块化,我很希望代码有这样的模块化:,我访问变量的值,不是通过直接调用它们的名字,而是通过调用某个可以,访问这些变量名的方法来访问。
Let's assume, for sake of argument, the thing I'm looking for is bigger than this. In that case, I'm going to throw away all of this, I'm going to hit that bottom line of that code.
让我们假定不是,假定要找的元素,比这个大,在这样的情况下,这些都擦掉,我要运行到代码的最后一行。
So you know from algebra I can't actually solve this. There may be multiple solutions to this. What would I have to do to change my code? And the answer is fortunately not a lot.
我解不出来方程,可能会有多组答案,我需要怎样修改我的代码呢?,很幸运的,答案是不用修改很多。
I know this is a simple example, but when you mature as a programmer, one of the first things you should do when you sit down to tackle some problem is write something like this pseudo code.
我知道这是个很简单的例子,但是当你们成长为一名程序员后,当你们碰到问题后第一件事情就是,该写一些类似于,伪代码的东西。
And the second thing that we talked about is this idea that we want you to in fact learn how to relate a choice you make about a piece of code to what the efficiency is going to be.
关于这个方法第二件事,就是我们实际上希望,你在写代码的时候,能做出优化效率的选择,因为此。
The only thing that compiler needs to know is kind of what pattern to look for in the rest of your code.
编译器需要知道的唯一的东西是,用来在剩下的代码中寻找的函数形式。
The idea of a "code walkthrough" refers to the process of walking through your code verbally or visually with or without other people.
代码走查“的概念是单独或者和别人一起,通过查看或讨论学习你们的代码,的一个过程。
Which is a way of reminding you that I need to think as I write the code about what are my expectations from the input, and how might I enforce them.
通过这个我在提醒大家,在写代码的时候,要搞清楚对输入的期望,并思考下如何执行这些期望。
It's the same computation. But this is a nice way of writing it, often called defensive programming.
这跟原来的计算过程没什么不同,但这是写代码的更优秀的一种方式。
Now in fairness, that particular problem kind of happened because so many companies ended up running so much code for many more years than the programmers actually thought they would be running it, but the idea is still the same.
公平起见,那个问题有时会发生,因为实际上,很多企业在这么多年里运行了,比程序员多得多的代码,虽然他们将运行它,但那个构想还是一样的。
Right, so the things we want you to take away from this are, get into the habit of using pseudo code when you sit down to start a problem, write out what are the steps.
好,这儿我想大家明白的就是,养成解决问题时先写伪代码的好习惯,把步骤都写出来,我想要告诉你们的是一个好的程序员。
Right now, what my code is doing is, it's printing them up for me, which is useful.
它的所有的除数,现在,我的代码要做的就是。
That code says the following: the IF says, I've got an expression, I'm going to evaluate it.
代码的含义是这样的:,我有一个表达式,我会去对这个表达式求值。
This is actually a piece of code that is really easy to think about recursively and is much more difficult to think about in other ways.
这确实是一段用递归思考起来非常容易,而其它方法特别麻烦的代码,这一段代码的意思就是。
And it becomes a powerful way of reasoning about the code, a powerful way of using the code, so those notions of specs are really important.
以保证你写对代码,这将成为分析代码,使用代码的重要手段,所以规范说明的概念。
Another good thing to do when you're really stuck is walk away. Take a break. Come back and look at it with fresh eyes of your own.
当你卡住的时候另外一件有益的事,就是走开休息一会儿,再回来看代码的时候你的眼睛就清醒多了。
If you can read the code a year later, even code you wrote yourself, it's a good sign that you put good comments in, right?
如果你还能读懂1年前的代码,就算是你自己写的代码,这也说明了你放进去的注释,已经非常好了,对不对?
Good programming style. All right? Things that we ought to do, as you put these pieces together in order to give you really good code.
优秀的编程风格,对不对?,为了得到真正优秀的代码,我们在把代码放到一起的时候。
But in general, the choice of variable name is a great way of commenting your code.
但是通常来说,变量名称的选择,是评论你的代码的,一个重要方式。
This also, by the way, in some sense, gives me the beginnings of my comments for what the structure of my code is going to be.
顺便说一句,在某种意义上这也是我,对于我的代码结构的,讲解的开始。
And so the only two differences are, right there, and there versus here and here.
因此这两块代码的不同之处,就仅仅在于位置不同了。
应用推荐