2016-03-22 4 views
0

Diese Frage bezieht sich auf Workflow- und CSS-Strukturen.Wie macht man eine 'weiche' Veröffentlichung von Features/Refactoring in CSS?

tl; dr

Suche nach einer besten Praxis meines CSS-Refactoring und reestructure so dass verschiedene Teams die gleiche Datei verwenden können, aber ohne Auswirkungen, wie die Website wie für andere Teams aussieht.

in der Tiefen Erklärung

ich mit einer großen "eCommerce" Abteilung in einem großen Unternehmen arbeiten (1k + Mitarbeiter). Ich bin der erste Webdesigner, der hier arbeitet und ich habe mehr als 5 Jahre Java-Entwickler-CSS geerbt. Wir haben 3 große Teams, die das gleiche CSS für ihre Bereiche der Website verwenden.

Ich wurde beauftragt, alle Bereiche unserer eComm-Lösung mit dem gleichen Look and Feel zu versehen. Dies bedeutet, dass ich viel Code umstellen muss (ich würde ungefähr 90% schätzen). Ich gebe ein Beispiel mit Tabellen:

<table class="company-table team-table static-table"></table> 

Das macht meine Aufgabe der CSS-Refactoring wirklich hart. Ich möchte nur die Tabelle in eine "statische" Tabelle zusammenfassen, die für alle Teams verwendet werden soll. Ich konnte einen Blick auf allen Tischen nehmen und Refactoring sie in der Klasse

static-table

Das Problem bei diesem Ansatz ist, dass diese Klasse in Kombination mit anderen Klassen von jedem Team verwendet wird, die Änderungen in die Tabelle machen und könnte sogar die refaktorierte Klasse überschreiben.

Jedes Team hat verschiedene Sprints und Releases, die nicht synchron sind. Ich könnte die Teams bitten, ihre Arbeit mit meinen zu synchronisieren. Aber das wird nicht passieren.

Meine Idee ist es, eine völlig neue Klasse zu machen, zB:

company-static-table

In dieser neuen Klasse würde ich alle Attribute für den Tisch gelegt:

.company-static-table {border-radius: 0.5em; padding: 1em; ... } 

dann könnte ich sagen, die Teams, die eine neue statische Tabellenklasse haben und zum Beispiel 5 Sprints haben, um die neue Klasse zu implementieren. Auf diese Weise würde ich ihnen erlauben, die Änderungen hinzuzufügen, wenn es ihnen am besten passt.

Das würde gut funktionieren, wenn die Tische für immer gleich bleiben und überall gleich aussehen sollten. Es kann aber sein, dass wir (zB) in einem Bereich der Website (anderes Team) eine andere Auffüllung benötigen. Meine Lösung wäre:

.company-static-table { ... 
 
     .team-a-table { 
 
     padding: 0.5em; 
 
     } 
 
    }

... gut, aber das wieder mit dem Problem beginnen würde. Es wäre ein bisschen besser, denn jetzt gibt es Objekte mit 4 oder sogar mehr CSS-Klassen, die in einem refaktoriert werden könnten. Auf diese Weise würde ich die Anzahl der Klassen auf maximal 2 reduzieren.

Es sollte klar sein, dass ich ihren Workflow nicht ändern kann. Ich möchte nicht für jedes Team ein CSS erstellen.

Dies ist eine große Herausforderung für mich und ich habe nur 2+ Jahre Erfahrung ohne Kollegen oder Chef, die Webdesigner sind. Ich habe bereits viele Elemente gebrochen, die versuchen, den Code zu überarbeiten.

Bitte jede Hilfe wäre super. Ich habe fast 20k Zeilen (wenn kompiliert) CSS umzuformen. Ich will nicht nur eine bestimmte Methode starten, um zu sehen, dass es eine schlechte Idee ... für jede Eingabe

Dank

+0

Haben Sie in Betracht gezogen, sich auf ein Team zu konzentrieren? Arbeiten Sie mit ihnen zusammen, um das "Unternehmen" css zu entwickeln, zusammen mit ihnen zu liefern und dann in jedes neue Team zu migrieren, indem Sie mit ihnen zusammenarbeiten, um das CSS bei Bedarf weiterzuentwickeln, während die Kompatibilität mit den bereits laufenden Teams erhalten bleibt. – forsvarir

+0

Danke für Ihre Antwort. Aber das ist nicht möglich. Ich kann nicht aufhören für die anderen Teams zu entwickeln. Außerdem würde das Problem der Auseinandersetzung mit inkompatiblen Stilen nicht angegangen. Das Hauptproblem besteht in der Aufrechterhaltung der Kompatibilität mit den Teams. Ich habe keine Ahnung, wie das geht ... = \ –

Antwort

0

Die beste Antwort auf diese war (und auch das, was ich tat) gesehen werden kann, in dieses Video:

https://www.youtube.com/watch?v=iDhj92tPjYU (at 24:25 Start)

kurz: parallel Releases zu machen, die eine Zeit lang Seite an Seite leben und eine CSS-Datei mit den neuen Versionen ändern die zur Aufnahme ändert sich, während immer noch die gleiche alte Struktur beibehalten wird.

Ich hoffe, diese Antwort kann anderen Menschen helfen.