Über diesen kulturspezifischen Begriff lässt sich leicht nachdenken, weshalb es so schwierig ist, konkrete Beispiele zu finden. Es ist ein Begriff, der den Menschen verankert ist, die die Überlegungen anstellen sollen.
"Einfach zu überlegen" ist eigentlich eine sehr selbsterklärende Phrase. Wenn man sich den Code ansieht und überlegen will, was er tut, ist es einfach =)
Okay, es kaputt zu machen. Wenn Sie sich Code ansehen, möchten Sie normalerweise, dass er etwas bewirkt. Sie möchten sicherstellen, dass es das tut, was Sie denken, dass es tun sollte. Sie entwickeln also Theorien darüber, was der Code tun soll, und überlegen dann, warum der Code tatsächlich funktioniert. Sie versuchen, den Code wie einen Menschen (und nicht wie einen Computer) zu betrachten und die Argumente darüber zu rationalisieren, was der Code bewirken kann.
Der schlimmste Fall für "einfach zu begründen" ist, wenn der Code nur Zeile für Zeile durchlaufen werden kann, wie bei einer Turing-Maschine für alle Eingaben. In diesem Fall können Sie den Code nur begründen, indem Sie sich in einen Computer verwandeln und ihn in Ihrem Kopf ausführen. Diese Beispiele für den schlimmsten Fall lassen sich leicht in verschleierten Programmierwettbewerben erkennen, z. B. in den folgenden drei Zeilen von PERL, mit denen RSA entschlüsselt wird:
#!/bin/perl -sp0777i<X+d*lMLa^*lN%0]dsXx++lMlN/dsM0<j]dsj
$/=unpack('H*',$_);$_=`echo 16dio\U$k"SK$/SM$n\EsN0p[lN*1
lK[d2%Sa2/d0$^Ixp"|dc`;s/\W//g;$_=pack('H*',/((..)*)$/)
Auch hier ist der Begriff aus verständlichen Gründen sehr kulturell. Sie müssen berücksichtigen:
- Welche Fähigkeiten hat der Reasoner? Wie viel erfahrung
- Welche Art von Fragen könnte der Reasoner zum Code haben?
- Wie sicher muss der Reasoner sein?
Jeder dieser Effekte ist "leicht zu überlegen" unterschiedlich. Nehmen Sie die Fähigkeiten des Reasoners als Beispiel. Als ich in meiner Firma anfing, wurde mir empfohlen, meine Skripte in MATLAB zu entwickeln, weil es "leicht zu überlegen ist". Warum? Nun, jeder in der Firma kannte MATLAB. Wenn ich eine andere Sprache wählen würde, könnte mich niemand besser verstehen. Macht nichts , dass MATLAB Lesbarkeit ist scheußlich für einige Aufgaben, nur weil es nicht für sie entworfen wurde. Später, im Laufe meiner Karriere, wurde Python immer beliebter. Plötzlich wurde MATLAB-Code "schwer zu verstehen" und Python war die bevorzugte Sprache für das Schreiben von Code, über den man leicht nachdenken konnte.
Überlegen Sie auch, welche Redewendungen der Leser haben könnte. Wenn Sie sich darauf verlassen können, dass Ihr Leser eine FFT in einer bestimmten Syntax erkennt, ist es "einfacher, über den Code nachzudenken", wenn Sie sich an diese Syntax halten. Damit können sie die Textdatei als Zeichenfläche betrachten, auf die Sie eine FFT gemalt haben, anstatt sich mit den Details auseinandersetzen zu müssen. Wenn Sie C ++ verwenden, finden Sie heraus, wie gut Ihre Leser mit der std
Bibliothek vertraut sind . Wie sehr mögen sie funktionale Programmierung? Einige der Redewendungen, die aus den Container-Bibliotheken kommen, hängen stark davon ab, welchen idomatischen Stil Sie bevorzugen.
Es ist auch wichtig zu verstehen, welche Fragen der Leser beantworten möchte. Sind Ihre Leser hauptsächlich mit dem oberflächlichen Verständnis des Codes beschäftigt oder suchen sie nach Fehlern tief im Darm?
Wie sicher der Leser sein muss, ist tatsächlich interessant. In vielen Fällen reicht ein trübes Denken aus, um das Produkt aus der Tür zu holen. In anderen Fällen, wie z. B. der FAA-Flugsoftware, möchte der Leser ein ironisches Denken. Ich stieß auf einen Fall, in dem ich mich für die Verwendung von RAII für eine bestimmte Aufgabe aussprach, weil "Sie es einfach einrichten und vergessen können ... es wird das Richtige tun." Mir wurde gesagt, dass ich falsch lag. Diejenigen, die sich mit diesem Code auseinandersetzen wollten, waren nicht die Art von Leuten, die "nur die Details vergessen wollen". Für sie war RAII eher ein hängender Junge, der sie dazu zwang, über alles nachzudenken, was passieren kann, wenn Sie den Spielraum verlassen.