In part 3 of Build Your Own Text Editor, the following preliminary implementation is presented for a function called editorProcessKeypress:
void editorProcessKeypress() {
char c = editorReadKey();
switch (c) {
case CTRL_KEY('q'):
exit(0);
break;
}
}
It's a very short function, but it's already got a problem: it's doing two different things: 1) reading input from the user, and 2) processing that input. If you're not seeing the problem, imagine if you wanted to use the editor in a scripting environment to modify a file. As it's written above, reading the input from the terminal is a part of editorProcessKeypress. Fortunately, this is easy enough to fix, just move the call to editorReadKey up one level, and pass the result in as a parameter:
void editorProcessKeypress(char c) {
switch (c) {
case CTRL_KEY('q'):
exit(0);
break;
}
}
/* ... */
editorProcessKeypress(editorReadKey());
Note how this also gives us a couple of functions that can be composed together in a nicely satisfying way. Discussion of Curly's Law.
No comments:
Post a Comment