Rather new to the OOP approach, I got some questions concerning efficiency.
In my class I have some private functions. Some properties return values based upon these functions.

Would it be best if I set a variable in my class and Initialize it in the constructor, then return this variable, like so:

VB Code:
  1. Public Class MyMovie
  2.     Private strMovie As String
  3.     Private strName As String
  4.     Private strYear As String
  5.  
  6.     'Constructor
  7.     Public Sub New(ByVal strFullMovieName As String)
  8.         strMovie = strFullMovieName
  9.         strName = DoABunchOfStuff() 'This is a private function in my class
  10.     End Sub
  11.  
  12.     Public ReadOnly Property Name() As String
  13.         Get
  14.             Return strName
  15.         End Get
  16.     End Property
  17.  
  18. (...)

Or by calling the function directly from the property, like so:

VB Code:
  1. Public Class MyMovie
  2.     Private strMovie As String
  3.     Private strName As String
  4.     Private strYear As String
  5.  
  6.     'Constructor
  7.     Public Sub New(ByVal strFullMovieName As String)
  8.         strMovie = strFullMovieName
  9.     End Sub
  10.  
  11.     Public ReadOnly Property Name() As String
  12.         Get
  13.             Return DoABunchOfStuff()
  14.         End Get
  15.     End Property
  16.  
  17. (...)

I reckon that in the latter example each time I 'm getting the value of that property, the private function has to be executed where as in the first example this only happen when creating an instance my class. The first would be more efficient, better. Am I right or ?