I would name your interface 'customer', the struct in the main code
'customerImpl' and the struct in the test code 'mockedCustomer'. However,
we are dealing with unexported types here. I tend to be less picky about
names for unexported types and prefer to leave them to each programmer's
discretion as long as the names are reasonable.
In general, I adopt the following guidelines:
For an exported interface that does not represent any domain idea and they
are there because of their methods, I would adopt the "-er" naming
convention. (eg. Stringer, Closer, etc.)
For an exported interface that represents a domain idea, I would use the
domain object name. It is preferable to have a noun with no adjective (eg.
Customer, Product, Shop, etc.)
For a struct that is not exported but it is the concrete implementation
of an exported interface, I would use the "<interface_name>+Impl"
or "<adjective><interface_name>+Impl" to indicate that the struct is the
concrete implementation of a public interface (eg. customerImpl,
specialCustomerImpl, customShopImpl, etc.) .
For a struct that is exported, I would use the "<adjective><noun>" format.
(eg. PublicAccountant, etc.).
For any interface or struct that is used for testing purposes only, I
would prefix the name with the word "mocked".
For any interface or struct that is not exported, I would leave them to the
programmer's discretion.
That's what I would do. You may adopt a different naming convention. As far
as I know, Go puts very little restriction on the subject.
On Sunday, March 5, 2017 at 10:04:47 AM UTC+7, mlg wrote:
> Nope, that's not it :'(. Here's a better way to explain:
>
> main.go
> // (unexported)
> type database?? interface { // how do I name this?
> query() (result, error)
> }
>
> // (unexported)
> type database?? struct {} // how do I name this?
>
> func (d database??) query() (result, error) {
> ...
> }
>
> test.go
> // (unexported)
> type mockDatabase struct {} // this name makes sense to me
>
> func (d database??) query() (result, error) {
> ...
> }
>
> If I've known it was gonna be this hard to get my point across, I would
> have done this from the start; I'm terribly sorry for wasting so much of
> your time.
>
> On Sunday, 5 March 2017 15:30:17 UTC+13, Henry wrote:
>>
>> Let's see if I understand your question correctly. You have the interface
>> in your main code, and the implementing struct in your test code. Do I get
>> that right?
>>
>> Another question is whether the main code and the test code live in the
>> same package or different package. I normally put my test code in a
>> separate package. So if my main code is in package abc, then my test code
>> would be in abc_test.
>>
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.