God component
Labai daug atsakomybės turi komponentas. Visas (visas kodas viename APP.tsx) arba per daug kodo viename faile. Reikia stantis kad faile butu iki 100 eilučių. Jeigu jau 100-200 eilučių kodo, jau reikia galvoti apie mažinimą. Vienas komponentas, viena atsakomybė. Viena priežąstis keisti.
God component (kai visas kodas viename faile):
App.module.css
App.tsx
index.css
main.tsx
God component (kai viename faile daug atsakomybių, komponentas atsako uz modulio valdyma, formos kontrole, filtrus ir task):
const App = () => {
const [tracks, setTracks] = useState<Track[]>([]);
const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth());
const [selectedYear, setSelectedYear] = useState(new Date().getFullYear());
const [hideWeekends, setHideWeekends] = useState(false);
const [isModalOpen, setIsModalOpen] = useState(false);
const [selectedCell, setSelectedCell] = useState<{ day: number; task: string} | null>(null);
const [selected Track, setSelectedTrack] = useState<Track | null>(null);
const [formData, setFormData] = useState({
name: '',
task: '',
hours: 0,
date: new Date().toISOString().split('T')[0] });
Minusai:
- neaiškus kodas. Milerio krepsis, žmogus galvoje gali tureti 5 - 7 abstrakcijų vienų metu. Norint suprasti, kaip veikia, reikia VISKĄ suprasti.
- neimanoma kodo perpanaudoti
Sprendimas
Išskaidyti kodą į atskirus komponentus