Swift:
Refatoração
Como Fazer:
Vamos começar com um exemplo básico em Swift onde temos algum código repetitivo:
func printUserDetails(firstName: String, lastName: String, age: Int) {
print("Nome: \(firstName)")
print("Sobrenome: \(lastName)")
print("Idade: \(age)")
}
func printUserJob(title: String, company: String) {
print("Cargo: \(title)")
print("Empresa: \(company)")
}
Refatorar isso incluiria criar uma struct User
para encapsular os atributos do usuário e adicionar um método para imprimir detalhes:
struct User {
let firstName: String
let lastName: String
let age: Int
let jobTitle: String
let company: String
func printDetails() {
print("Nome: \(firstName)")
print("Sobrenome: \(lastName)")
print("Idade: \(age)")
print("Cargo: \(jobTitle)")
print("Empresa: \(company)")
}
}
let user = User(firstName: "John", lastName: "Doe", age: 30, jobTitle: "Desenvolvedor de Software", company: "Tech Solutions")
user.printDetails()
Exemplo de Saída:
Nome: John
Sobrenome: Doe
Idade: 30
Cargo: Desenvolvedor de Software
Empresa: Tech Solutions
Mergulho Profundo
A refatoração tem raízes que remontam aos primeiros dias da engenharia de software, mas o termo foi popularizado no final dos anos 1990, particularmente através do livro seminal de Martin Fowler “Refactoring: Improving the Design of Existing Code”. O livro estabeleceu o princípio de que o código deve ser continuamente limpo em pequenos passos, em vez de esperar por uma fase separada.
Alternativas à refatoração manual incluem ferramentas automatizadas e IDEs (Ambientes de Desenvolvimento Integrados) que podem ajudar a detectar código duplicado, sugerir simplificações e gerar automaticamente porções de código. O Xcode, para desenvolvimento Swift, oferece várias ferramentas de refatoração, como renomear e extrair funcionalidade de método, que podem reduzir o potencial de erro humano no processo.
Ao implementar a refatoração, é importante ter um conjunto sólido de testes no lugar. Os testes atuam como uma rede de segurança, garantindo que as mudanças que você está fazendo não estejam introduzindo bugs. Isso é vital, uma vez que o principal objetivo da refatoração é alterar a estrutura interna sem afetar o comportamento externo.