Dobre praktyki programistyczne

StructuredInfo – obiekty zamiast zwykłego String

29.12.2011

Metoda toString jest prostym sposobem na wyświetlenie wewnętrznych wartości obiektu. Ale jeśli chcesz je zaprezentować w innym formacie, może być trudno lub niebezpiecznie parsować wynik toString. Lepszym sposobem jest więc przekazanie obiektu mającego wewnętrzną strukturę, który może być później zserializowany do wybranego formatu. Stworzyłem więc projekt w Scala 2.9.1, do zbierania danych w aplikacji i ich serializacji.

Przykładowy kod używający tych klas:

Przykład   
  1. object InfoMain {
  2. def main(args: Array[String]): Unit = {
  3. println("Info example")
  4.  
  5. val info = new OrderedInfo("Top").addComment(new Date).
  6. addProperty("top1", "value1").
  7. addInfo(new OrderedInfo("Level1").addProperty("valueL1", 1).
  8. addInfo(new OrderedInfo("Level2").addComment("next comment").
  9. addProperty("valueL2", 1)).
  10. addComment("many\nlines\nhere"))
  11.  
  12. println("Ini file:")
  13. println(new IniFormatter(info).toString)
  14. }
  15. }

Wynik działania tego kodu:

  1. Info example
  2. Ini file:
  3. [Top]
  4. ; Thu Dec 29 09:56:01 CET 2011
  5. top.top1 = value1
  6. [Top.Level1]
  7. top.level1.valueL1 = 1
  8. [Top.Level1.Level2]
  9. ; next comment
  10. top.level1.level2.valueL2 = 1
  11. ; many
  12. ; lines
  13. ; here

Pełny kod źródłowy projektu StructuredInfo jest dostępny na github.org. Licencja ISC.

Leave a Response