Skip to content

Consider including package name in S3 class name(s)? #13

@rogiersbart

Description

@rogiersbart

Since the renaming of the {scales} S3 class to "transform", it clashes with e.g. {raylibr}'s S3 class. The print() method is defined in both packages, and generates a warning, but certain methods from {raylibr} not defined in {scales}, break {scales} and therefore {ggplot2}. In the reprex below, in particular, S3method("$",transform) from {raylibr} is responsible. As {scales} and {ggplot2} are widely used, and it seems to be recommended to include the package name in S3 class names (well, at least according to Advanced R), maybe it would be useful to consider including the package name in the S3 class names? I'm not sure how straightforward this would be however, as I believe most of {raylibr}'s code was generated automatically to wrap {raylib} through {Rcpp} ... ?

library(raylibr)
#> 
#> Attaching package: 'raylibr'
#> The following object is masked from 'package:base':
#> 
#>     transform
library(ggplot2)
#> Registered S3 method overwritten by 'scales':
#>   method          from   
#>   print.transform raylibr
ggplot2::ggplot(cars) +
  ggplot2::aes(speed, dist) +
  ggplot2::geom_point()
#> Error:
#> ! `transform` has no property transform.

Created on 2024-05-08 with reprex v2.1.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions