Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于组件接口名称和文件合并 #8

Closed
jpssff opened this issue Mar 28, 2014 · 9 comments
Closed

关于组件接口名称和文件合并 #8

jpssff opened this issue Mar 28, 2014 · 9 comments

Comments

@jpssff
Copy link

jpssff commented Mar 28, 2014

  • 建议原型上的私有方法名称都以_开头,并补充在规范上,提醒开发者不要调用下划线开头的私有方法;或者,提供一个interface方法,指定哪些方法可以公开:
Control.extends(一堆方法).interface(['fn1', 'fn2', ...])  //fn1,fn2都在前面extends参数的对象中,但只有这些方法真正扩展到原型上了。
  • libControl能否合并?仅仅因为可以在使用中减少一个请求 :)

大家看下呢?

@leeight
Copy link
Member

leeight commented Mar 31, 2014

为啥需要interface?

@errorrik
Copy link

  1. 不推荐interface。
  2. lib和Control建议开发时区分,合并的事交给optimize来做
  3. 关于私有成员,moye现在的原则是什么?下划线开头?or 封在内部不暴露?

@chriswong
Copy link
Member

关于私有成员,moye现在的原则是什么?下划线开头?or 封在内部不暴露?

没有强制处理,对外靠文档注释来标识

@jpssff
Copy link
Author

jpssff commented Mar 31, 2014

为啥需要interface?

@leeight 只是我建议的一种不暴露私有api的方式,防止开发者错误调用了私有方法;

@errorrik 目前moye中关于私有命名比较随便,有下划线的,也有没加的,仅靠文档来标识。但实际使用中,大多人会在控制台看下方法和属性,猜测的就用了。认真看文档只有少数人。。

如果不建议增加interface方法,那么建议对私有方法统一加下划线吧,也很直观。

@chriswong
Copy link
Member

私有方法还是通过闭包来解决吧,虽然规范没有作要求

私有属性规范要求是下划线开头的,现有代码和单测要整理一下

@musicode
Copy link

musicode commented Apr 1, 2014

同意私有方法用闭包解决,这样在控制台打印 instance.prototype 就清楚多了,不用看文档就知道该用哪个

我觉得外部常用的属性应该尽量通过 getter 方法提供,不要通过 instance.xx 的形式使用,比如 Select 就是 select.getValue() 而不会直接去读 select.value

@otakustay
Copy link
Member

私有方法用闭包的缺点是this的控制比较凌乱,没有“在prototype上的方法this一定是当前实例”这么直观,this是通过某个参数传递还是调用时必须是callapply需要有一定的单程可循

@musicode
Copy link

musicode commented Apr 1, 2014

@otakustay 我觉得闭包函数应该传参数,而不是call/apply,因为 this 无法压缩成一个字母,倒不如直接点 fun(instance, arg1, arg2, ...)

@jpssff
Copy link
Author

jpssff commented Apr 1, 2014

今天和 @jinzhubaofu @windtalkers 当面沟通,结论如下:

  1. 私有属性下划线开头;
  2. 私有方法通过闭包封闭起来,lib中提供一个通用方法做这个事情;
  3. lib和Control合并,后续lib移除dom相关的方法,具体组件可使用jQuery的方法操作dom。

@jpssff jpssff closed this as completed Apr 1, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants