Best Code Practice creating an Add in

Dear Guys,

What are the best code practices while creating an add in.

Question 1 :

The add in class is called directly without instantiating it . Is the add in  class a Shared Class by default.

Is making a call to public procedure in a public module from the swaddin class module good code practice.

Is passing a pointer to the add in class a good method to get a pointer to the Solidworks instance in the add in class.

Thanks.

SolidworksApi macros