Condividi tramite


Windows Confidential: Rilevamento delle impronte digitali

Generalmente, l'ultima persona che ha modificato un segmento di codice viene considerata responsabile in ultima istanza della corretta esecuzione dello stesso.

Raymond Chen

C'è una legge non scritte nello sviluppo di software: L'ultima persona a fare una modifica di una riga di codice diventa ipso facto responsabile di eventuali problemi di risalire a quella linea di codice. Anche se tutto quello che fatto era inserire uno spazio dopo la virgola o difficoltà l'ortografia di una variabile locale, le impronte digitali sono sul codice. Quando qualcosa va storto, la polizia di codice verrà a bussare alla tua porta.

La maggior parte dei sistemi di controllo del codice sorgente sono uno strumento che identifica automaticamente l'ultima persona a fare un cambiamento a un file. Inoltre possibile generare un elenco di file dove ogni riga di codice viene annotata con il nome della persona che ultima modifica il codice.

In alcuni progetti, ci potrebbe essere una funzione o un componente che è così problematici persone evitare di apportare eventuali modifiche se possibile. Temono di avere le loro impronte digitali su di esso avrà loro mettere sul posto per la sfilza di problemi in ultima analisi fatta risalire a tale codice.

Finalmente

Uno dei miei colleghi precedente ha preso questa tradizione di istintivamente incolpando eventuali difetti sull'ultima persona a toccare un file e utilizzato come base per una burla di addio. Come suo atto finale prima di lasciare la squadra per unirsi a un altro progetto all'interno di Microsoft, commise un cambiamento che spanning attraverso centinaia di file. E ' toccato ogni file di ogni componente critico.

Il commento associato a questo cambiamento epocale commit aveva il titolo di "Convert a Unicode ampia". Nei commenti copiosa dettaglio, ha chiesto scusa che egli era "in grado di convertire una gran parte del progetto, ma non tutti." Il commento anche spiegato quale codice necessari per cambiare nel corso del progetto per finire il lavoro. Inoltre ha notato alcuni "aspetti negativi" che potrebbero essere rilevato.

Quanto più leggere il commento, più siete chiesti quale tipo di follia stava vivendo. Il commento ha discusso le modifiche ad alcune costanti fondamentali come MAX_PATH, estensioni speciali del compilatore per creare dello stack buffer che dinamicamente espanso in atto (spostando tutte le altre variabili locali per creare uno spazio) e altre modifiche al codice pazzesco.

Lo scherzo è stato rivelato quando hai studiato in realtà i file ha cambiato. Ogni singolo file nel cambiamento era un commit a null. Egli non ha modificare una sola riga di codice. I file sono stati nel cambiamento impostato solo per show.

Questo scherzo ha avuto effetti della durata di un po' di tempo, soprattutto a causa di suo tempismo. Poco dopo il mio ex collega perpetrato questo scherzo, il team di gestione del progetto ha deciso di creare un database in cui traccia quale sviluppatore è stato il contatto principale per ogni file nel repository. Per popolare inizialmente questo database, hanno seguito la regola "ultima persona a presentare una modifica al file". Perché il mio collega aveva recentemente presentato modifiche a ogni file nei componenti critici, quasi tutti i file in tali componenti critici finito con il suo nome collegato.

Per almeno un anno dopo, qualsiasi persona o strumento automatico del database di consulenza avrebbe inviato il mio collega una e-mail quando hanno trovato un problema in uno dei file che ha modificato. Egli avrebbe inoltrare la posta elettronica torna a suoi compagni vecchi per chiedere loro di dare un'occhiata e aggiornare la voce del database per riferirsi al proprietario del corretto. Questo era cosmica ricompensa per infliggere il suo scherzo addio in primo luogo.

Raymond Chen

Raymond Chen s Sito Web, The Old New Thing, e trattare in modo identico intitolato libro (Addison-Wesley, 2007) storia Windows, Win32 programmazione e metaforiche parcheggi.

Contenuto correlato