Abhi Yadav

Abhi Yadav

  • NA
  • 133
  • 678

Refactor using Solid Principles

Jan 6 2020 5:22 AM
I have this code , i wanted to modify it using SOLID principles where all can i edit it please suggest
  1. class Program  
  2. {  
  3. static void Main(string[] args)  
  4. {  
  5. List<Figure> figureList = new List<Figure>();  
  6. Figure rectangle = new Figure()  
  7. {  
  8. Height = 3,  
  9. Width = 4,  
  10. Type = ShapeType.Rectangle  
  11. };  
  12. figureList.Add(rectangle);  
  13. Figure square = new Figure()  
  14. {  
  15. Height = 4,  
  16. Type = ShapeType.Square  
  17. };  
  18. figureList.Add(square);  
  19. Figure circle = new Figure()  
  20. {  
  21. Radius = 3.5,  
  22. Type = ShapeType.Circle  
  23. };  
  24. figureList.Add(circle);  
  25. foreach (Figure figure in figureList)  
  26. {  
  27. Console.WriteLine(figure.CalculateArea());  
  28. figure.Save();  
  29. }  
  30. }  
  31. }  
  32. public class Figure  
  33. {  
  34. public double Height { getset; }  
  35. public double Width { getset; }  
  36. public double Radius { getset; }  
  37. public ShapeType Type { getset; }  
  38. public void Save()  
  39. {  
  40. if (Type == ShapeType.Circle)  
  41. throw new Exception("Circle cannot be saved!");  
  42. //save the object to a file  
  43. using (Stream stream = File.Open("saveFile.bin", FileMode.OpenOrCreate))  
  44. {  
  45. BinaryFormatter formatter = new BinaryFormatter();  
  46. formatter.Serialize(stream, this);  
  47. }  
  48. }  
  49. public double CalculateArea()  
  50. {  
  51. try  
  52. {  
  53. if (Type == ShapeType.Rectangle)  
  54. {  
  55. return Height * Width;  
  56. }  
  57. else if (Type == ShapeType.Square)  
  58. {  
  59. return Height * Height;  
  60. }  
  61. else if (Type == ShapeType.Circle)  
  62. {  
  63. return Radius * Radius * Math.PI;  
  64. }  
  65. }  
  66. catch (Exception e)  
  67. {  
  68. if (e is ArgumentNullException)  
  69. {  
  70. //log to a file  
  71. System.IO.File.WriteAllText("log.txt", e.ToString());  
  72. }  
  73. else if (e is ArgumentException)  
  74. {  
  75. //log to console  
  76. Console.WriteLine(e.ToString());  
  77. }  
  78. }  
  79. return 0;  
  80. }  
  81. }  
  82. public enum ShapeType  
  83. {  
  84. Rectangle,  
  85. Circle,  
  86. Square  
  87. }  

Answers (1)