Ich bin auf der Suche nach einem effizienten Weg, der sich auch nicht als Beleidigung herausstellt, um bestehenden Teammitgliedern OOP-Konzepte vorzustellen. Meine Teamkollegen sind nicht neu in OO-Sprachen. Wir arbeiten schon lange mit C ++ / C #, daher ist die Technologie an sich bekannt.
Ich sehe mich jedoch um und ohne großen Aufwand (meist in Form von Code-Reviews) scheint es, dass wir C-Code produzieren, der sich zufällig in Klassen befindet. Das Prinzip der einmaligen Verantwortung, Abstraktionen oder Versuche, die Kopplung zu minimieren, um nur einige zu nennen, werden kaum angewendet. Ich habe Klassen gesehen, die keinen Konstruktor haben, aber jedes Mal, wenn sie instanziiert werden, memset auf 0 setzen.
Aber jedes Mal, wenn ich OOP aufrufe, nickt jeder und macht den Eindruck, dass er genau weiß, wovon ich spreche. Die Konzepte zu kennen ist gut, aber wir (einige mehr als andere) scheinen es sehr schwer zu haben, sie anzuwenden, wenn es darum geht, tatsächliche Arbeit zu liefern.
Codeüberprüfungen waren sehr hilfreich, aber das Problem bei Codeüberprüfungen besteht darin, dass sie erst nachträglich auftreten, sodass es so aussieht, als würden wir den gerade geschriebenen Code am Ende umschreiben (meistens umgestalten, aber immer noch viel Zeit in Anspruch nehmen). Auch Code-Reviews geben nur Rückmeldungen an einen einzelnen Ingenieur, nicht an das gesamte Team.
Ich spiele mit der Idee, eine Präsentation (oder eine Serie) zu machen, und versuche, OOP erneut aufzurufen, zusammen mit einigen Beispielen für vorhandenen Code, der besser hätte geschrieben und überarbeitet werden können. Ich könnte einige wirklich alte Projekte gebrauchen, die niemand mehr besitzt, so dass zumindest dieser Teil kein heikles Thema sein sollte. Wird dies jedoch funktionieren? Wie ich bereits sagte, haben die meisten Leute C ++ schon lange gemacht, also denke ich, dass a) sie dort sitzen und darüber nachdenken, warum ich ihnen Dinge erzähle, die sie bereits kennen, oder b) sie es möglicherweise als Beleidigung ansehen, weil ich es bin Ich sage ihnen, dass sie nicht wissen, wie sie ihre jahrelange, wenn nicht jahrzehntelange Arbeit verrichten sollen.
Gibt es einen anderen Ansatz, der ein breiteres Publikum erreichen würde als ein Code Review, der sich aber gleichzeitig nicht wie ein Strafvortrag anfühlt?
Ich bin kein frischgebackener Student, der utopische Ideale für perfekt gestalteten Code hat, und das erwarte ich auch von niemandem. Der Grund, warum ich das schreibe, ist, dass ich gerade eine Rezension von einer Person gemacht habe, die tatsächlich ordentliches High-Level-Design auf Papier hatte. Wenn Sie sich jedoch Klassen vorstellen: A -> B -> C -> D, implementieren im Code B, C und D alle fast dieselbe öffentliche Schnittstelle, und B / C verfügt über One-Liner-Funktionen, sodass die oberste Klasse A absolut funktioniert Die gesamte Arbeit (bis hin zur Speicherverwaltung, zum Parsen von Zeichenfolgen, zum Einrichten von Verhandlungen ...) erfolgt hauptsächlich in 4-Mongo-Methoden und ruft in jeder Hinsicht fast direkt D auf.
Update: Ich bin ein Tech Lead (6 Monate in dieser Rolle) und habe die volle Unterstützung des Gruppenleiters. Wir arbeiten an einem sehr ausgereiften Produkt und die Wartungskosten lassen sich auf jeden Fall bekannt geben.