Case 3 can be a potential issue.
Current implementation might be returning a concrete class which we
might want to change later - making it a type change.
The intention might be to return an RDD (for example), but the
inferred type might be a subclass of RDD - and future changes will
cause signature change.


Regards,
Mridul


On Wed, Feb 19, 2014 at 11:52 AM, Reynold Xin <r...@databricks.com> wrote:
> Hi guys,
>
> Want to bring to the table this issue to see what other members of the
> community think and then we can codify it in the Spark coding style guide.
> The topic is about declaring return types explicitly in public APIs.
>
> In general I think we should favor explicit type declaration in public
> APIs. However, I do think there are 3 cases we can avoid the public API
> definition because in these 3 cases the types are self-evident & repetitive.
>
> Case 1. toString
>
> Case 2. A method returning a string or a val defining a string
>
> def name = "abcd" // this is so obvious that it is a string
> val name = "edfg" // this too
>
> Case 3. The method or variable is invoking the constructor of a class and
> return that immediately. For example:
>
> val a = new SparkContext(...)
> implicit def rddToAsyncRDDActions[T: ClassTag](rdd: RDD[T]) = new
> AsyncRDDActions(rdd)
>
>
> Thoughts?

Reply via email to