Nachahmung
Als ich auf meine Erfahrungen beim Lernen von Android und iOS zurückblicke, stelle ich fest, dass vieles des wertvollen Wissens durch Nachahmung erworben wurde.
Wie imitiert man? Man erstellt zwei Projekte. Zum Beispiel, um Jacks Freundeskreis-Implementierung nachzuahmen, schaue ich mir zwei Zeilen seines Codes an und schreibe dann seinen Code in meinem Projekt. Wenn ich etwas nicht verstehe, gehe ich zurück und schaue es mir noch einmal an. Wenn ich es verstehe, schreibe ich nach meinen eigenen Vorstellungen und schreibe auf einmal mehr.
Mit dieser Methode habe ich mich tiefgreifend daran erinnert, wie ich gelernt habe, das Pull-to-Refresh und das Wasserfall-Layout für Android selbst zu schreiben, sowie die manuelle Erstellung von Benutzeroberflächen für iOS, und so weiter.
Android的下拉刷新让我第一次不用XML直接对视图进行控制,并且理解了手势操作。这是一次提升。有时候,在抄写原作者的代码时,突然恍然大悟。有些东西是自己看不出来的,无论怎么思考。因为在看的时候忽略了很多细节,看不到关键的部分,而通过敲代码、手动操作,让人更加投入,时不时会思考为什么,注意到更多细节,最终理解那个东西。就像我前一篇提到的视差效果。一开始我并不知道横着或竖着放置背景图片会导致图片移动,后来在模仿代码的过程中注意到了很多细节,学会了毛玻璃效果的一种制作方法。
Früher habe ich in iOS oft xib verwendet. Einige Male habe ich versucht, Code von Hand zu schreiben, aber jedes Mal aufgegeben. Als ich das Projekt für einen Freundeskreis nachahmte, fühlte es sich an, als würde ich einfach nur abschreiben. Abgesehen von den Namen, die manchmal unterschiedlich waren, war alles andere fast identisch. Dennoch habe ich einige wichtige Dinge beim Schreiben von Code von Hand bemerkt. Zum Beispiel bei einer Tabellenzelle (cell), wenn die Höhe sich je nach Inhalt ändert, muss man die Höhe berechnen, bevor man sie zeichnet, und diese dann an die Tableview übergeben. Wie berechnet man die Höhe? Eine Methode besteht darin, die Höhe basierend auf einer festen Breite zu berechnen. Diese Dinge fallen einem auf, wenn man Code abschreibt.
Beim Nachahmen ist man oft auch intensiver dabei. Wenn ich Code lese, neige ich dazu, dabei einzuschlafen. Einerseits, weil das Gehirn müde wird, und andererseits, weil der ganze Körper ruhig ist und leicht in einen Ruhezustand verfällt. Ein Freund von mir macht sich beim Lesen von Code Notizen. Auf Zhihu sagt jemand, dass man Issues lösen sollte, indem man sich den Code ansieht und das Projekt kennenlernt. Das sind alles gute Ansätze, aber im Grunde muss man sich beteiligen, nicht nur zuschauen. Natürlich gibt es vielleicht einige, die allein durch Zuschauen und Nachdenken lange durchhalten können.
Beim Nachahmen und beim eigenen Erschaffen gibt es Unterschiede. Das Nachahmen ist einfacher, da man im Grunde denselben Code schreiben oder einfach kopieren kann. Der kreative Prozess hingegen ist deutlich schwieriger. Oft ist es einfacher, die Apps anderer nachzuahmen, da man deren Layout betrachten und die Rahmen leichter berechnen kann. Da das Nachahmen etwas einfacher ist, kann man länger dabei bleiben und wird nicht so schnell durch die Schwierigkeiten entmutigt. Manchmal kann man durch das Nachahmen sogar mehr lernen als durch das eigene Erschaffen.
Nachahmung reduziert Fehlversuche und ermöglicht es, schneller das richtige Wissen zu erlangen. Beim Erlernen der Programmierung kann man beispielsweise während der Arbeit an Projekten Google konsultieren. Auf diese Weise wird man viele Fehlversuche machen, hier etwas ausprobieren, dort etwas erkunden, was oft nicht die geeignetste Methode ist, insbesondere für Anfänger. Und oft sind diese Fehlversuche bedeutungslos. Manchmal reicht es aus, das richtige Wissen zu haben und zu verstehen, warum es richtig ist. Oftmals sind Fehlversuche ziellos, zum Beispiel bei HTML-Formaten, wenn das Layout nicht stimmt, man hier etwas ändert, dort etwas anpasst, es richtig macht, aber beim nächsten Mal auf das gleiche Problem stößt. Beim Nachahmen hingegen, da die richtige Antwort im Code anderer liegt, kann man sich daran orientieren. Die richtige Antwort ist greifbar. So erlangt man schnell das richtige Wissen. Zum Beispiel bei HTML-Formaten, ich suche mir einige HTML-Format-Projekte, kopiere Zeile für Zeile den Code anderer und denke dabei nach, was möglicherweise schneller und besser ist, als selbst herumzubasteln.
Nachahmen los!