Swift:
רפקטורינג
איך לעשות:
בואו נתחיל עם דוגמה בסיסית ב-Swift שבה יש לנו קוד חוזר על עצמו:
func printUserDetails(firstName: String, lastName: String, age: Int) {
print("First Name: \(firstName)")
print("Last Name: \(lastName)")
print("Age: \(age)")
}
func printUserJob(title: String, company: String) {
print("Job Title: \(title)")
print("Company: \(company)")
}
ריפקטורינג של זה כולל יצירת מבנה User
כדי לאגד את תכונות המשתמש והוספת שיטה להדפסת הפרטים:
struct User {
let firstName: String
let lastName: String
let age: Int
let jobTitle: String
let company: String
func printDetails() {
print("First Name: \(firstName)")
print("Last Name: \(lastName)")
print("Age: \(age)")
print("Job Title: \(jobTitle)")
print("Company: \(company)")
}
}
let user = User(firstName: "John", lastName: "Doe", age: 30, jobTitle: "Software Developer", company: "Tech Solutions")
user.printDetails()
פלט לדוגמה:
First Name: John
Last Name: Doe
Age: 30
Job Title: Software Developer
Company: Tech Solutions
צלילה עמוקה
ריפקטורינג יש שורשים שחוזרים לימי ההתחלה של הנדסת תוכנה, אבל המונח התפרסם באופן מיוחד בסוף שנות ה-90, בעיקר דרך הספר המכונן של מרטין פאולר “Refactoring: Improving the Design of Existing Code”. הספר הניח את העיקרון שקוד צריך להיות מנוקה באופן רציף בצעדים קטנים במקום לחכות לשלב נפרד.
חלופות לריפקטורינג ידני כוללות כלים אוטומטיים וסביבות פיתוח משולבות (IDEs) שיכולות לעזור לגלות קוד כפול, להציע פשטות וליצור אוטומטית חלקים מהקוד. Xcode, לפיתוח Swift, מציע מגוון כלים לריפקטורינג, כמו שינוי שם ויצירת שיטה שיכולים להפחית את הפוטנציאל לטעויות אנוש.
כשמיישמים ריפקטורינג, חשוב לדעת שיש סוויטת בדיקות מוצקה במקום. הבדיקות משמשות כרשת ביטחון, ומבטיחות שהשינויים שאתם מבצעים לא מביאים להופעת באגים. זה חיוני מכיוון שהמטרה העיקרית של ריפקטורינג היא לשנות את המבנה הפנימי ללא השפעה על ההתנהגות החיצונית.