I have a class called NetworkInterface - and I want to make this class testable. The way to do this in Swift means I should extract a protocol from it? My quandry is, what do I call this protocol? I don't want to call it NetworkInterface as that then takes the 'good name' for the protocol and then what would I call my NetworkInterface class? I've seen a pattern where people give the protocol the nice name and then call the class something horrible like DefaultNetworkInterface but I don't like this either.
Should I call the protocol NetworkInterfaceProtocol and then the class NetworkInterface? What would be conventional here?
Here is the code I have so far, but I'm not convinced my names are conventional.
protocol NetworkInterfaceProtocol {
func ip4() -> String?
}
struct NetworkInterface: NetworkInterfaceProtocol {
let interfaceName: String
func ip4() -> String? {
....
}
}
The only convention for protocol naming by Swift.org is to use noun,
able,ibleoringwhere applicable. reference hereSo one practice is to break down the entity into smaller describable parts and name them like:
And then using it like:
You can also merge them in the way the
Codabledoes like:Indeed you can have bigger chunks based on the needs and it does not have to be a 'single function only' in each protocol.
I hope you got the idea.