Enlace vs compilar vs controlador

Cuando creas una directiva, puedes poner código en el compilador, la función de enlace o el controlador.

En los documentos, explican que:

Las funciones de compilación y enlace se utilizan en diferentes fases del ciclo angular.Los controladores son compartidos entre directivas.

Sin embargo, para mí no está claro qué tipo de código debe ir a dónde.

Por ejemplo: ¿Puedo crear funciones en compilación y tenerlas adjuntas al alcance en el enlace o solo adjuntar funciones al alcance en el controlador?

¿Cómo se comparten los controladores entre las directivas, si cada directiva puede tener su propio controlador? ¿Los controladores son realmente compartidos o son solo las propiedades del alcance?

Respuestas a la pregunta(6)

Su respuesta a la pregunta