środa, sierpnia 16, 2006

Motanie kodu - czyli co wynika z chęci zarządzania zadaniami

Napisałem sobie kiedyś prosty programik w HTA, którego zadaniem miało być ułatwienie mi życia poprzez "zarządzanie" zadaniami.Obsługa programu jest i była prosta, można:
  • dodać nową sprawę
  • zaznaczyć, że sprawa została skończona
  • odwołać sprawę
Żadnej filozofii.Jednak trochę mi mało tej funkcjonalności i wymyśliłem sobie, że dodam możliwość tworzenia subtasków, czy jak kto woli podzadań.Ponieważ istniejący kod nie jest zbyt łatwy w utrzymaniu to od razu postanowiłem pisać wszystko od podstaw bazując tylko na wyglądzie starej wersji.I tu zaczęły się kłopoty ;-)Naturalną metodą na przechowywanie subtasków było dołożenie do obiektu przechowującego zadanie tablicy podzadań i metody do ich dodawania:function Task(descr,added,ended,nr,parent){this.nr=nr;this.parent=parent;this.descr=descr;this.added=added;this.ended=ended;this.subtasks = new Array();this.add=function(subtask){ this.subtasks.push(subtask);}};ale to spowodowało, że kod do zapisywania do pliku:function saveTasks(fName,array){var file=fso.OpenTextFile(fName,2,true);for (j=0; jzaczął złośliwie zapisywać do pliku z zadaniami również treść metody dodającej podzadania ;-)Rozwiązaniem okazało się zastoswanie sztuczki polegającej na takiej zmianie Tasks (obiektu przechowującego zadania) by te pola, które mają zostać zapisane do pliku wzbogacić o "_" na początku ;-)function Task(descr,added,ended,nr,parent){ this._nr=nr;this._parent=parent;this._descr=descr;this._added=added;this._ended=ended;this.subtasks = new Array();this.add=function(subtask){ this.subtasks.push(subtask);}};Dzięki temu po zmianie metody saveTasks() do postaci:function saveTasks(fName,array){var file=fso.OpenTextFile(fName,2,true);for (j=0; jif (field.indexOf("_")==0)for (field in element){ line+=(element[field]+'|');}file.WriteLine(line);};file.Close();}Do pliku trafiać zaczęły tylko te wartości, które powinny.Tutaj oczywiście pojawił się kolejny problem ;-)Ale o tym może kiedy indziej, a teraz idę spać bo jutro ważna narada w pracy :-)[Jutro o tym dlaczego informatycy są złymi programistami ;-)]


Podobne postybeta
[Updated] Czytanie Pocketa ;-)
Sudoku - rozwiązanie doskonałe ;p
2016 będzie rokiem "nietypowym"
Jak zrobić plik OVPN (dla OpenVPN) w wersji unified format?
Ściana, czyli rozbijam się na onclick ;-)