Contributing Tutorials

如果要贡献代码给tutorials, 只要 fork 下面的 repository:

[[https://github.com/txidol/interactive-tutorials]] 中文部分可先fork这个项目

其他[[https://github.com/ronreiter/interactive-tutorials]] 也可以直接fork根项目

然后你就可以添加和修改代码 , 然后发送一个 pull request.

要写一个 tutorial, 只要创建 Markdown 页面在tutorials相关目录下, 然后在 welcome screen 放入选项链接. 添加后需要确认在Flask web服务器的链接位置是否正确.

要把你的链接链接到tutorial,需要创建一个你的主链接入口页面 (通常用 Welcome.md 页面) 使用双括号 如 [[ xx ]].

一个页面表示一个主题, 对用户有些简单的练习测试. 如果用户更改代码满足了要求, 必须提供打印出的预期结果.

每一小节你必须满足如下的结构:

File name.md

Tutorial
--------
描述.

Exercise
--------
练习代码.

Tutorial Code
-------------
写一个代码块会出现在左边的解释器框中. 比如,你写了个空方法, 然后用户需要补充完代码以实现练习.

Expected Output
---------------
写一些代码会出现在预期框中,如果解释器框中的代码修改正确.

Solution
--------
写解决问题的方法.

页面命名与Action中的方法上的@Action注解标识一一对应。

例如:

@Action(“site-dic-view”): site-dic-view.ftl
@Action(“site-dic-add”):  site-dic-add.ftl
@Action(“site-dic-edit”): site-dic-edit.ftl
@Action(“site-dic-list”): site-dic-list.ftl

原则上每个业务实体对应一个Action类,命名格式:实体类名+Action。

例如:SiteAction、SiteDicAction。

常用的Action方法命名:

  1. 查看业务实体

    @Action(“site-view”)
    public String view() {
        // 代码
    }
    
  2. 新增业务实体(跳转到新增页面)

    @Action(“site-add”)
    public String add() {
        // 代码
    }
    

原则上每个业务实体对应一个Service类,命名格式:实体类名+Service。例如:SiteService、SiteDicService。

常用Service方法命名:

  1. 根据ID获取业务实体。

    Site getSite(String siteId) {
        // 代码
    }
    
  2. 根据Xxx获取业务实体。

    Site getSiteByXxx(String xxx) {
        // 代码
    }
    
  1. 表名:项目简写名_业务实体名。
    例如:Ipo_Site Ipo_SiteDic。

  2. 主键:PK_业务实体名_id。
    例如:PK_Site_id PK_SiteDic_id。

  3. 外键:FK_业务实体名_外键字段名。
    例如:FK_Site_organId FK_SiteDic_siteId。

  4. 索引:IDX_业务实体名_索引字段名。
    例如:IDX_Site_organId IDX_SiteDic_siteId。

  5. 字段:跟业务实体属性名保持一致,采用驼峰式命名规则。

  6. 外键的级联删除关系应该考虑清楚,究竟是级联删除、限制删除还是置空。

  7. 所有外键要求创建对应的索引,提高查询效率。

  8. 字段类型应尽量引用已定义的域(domain),可以统一类型及长度。

  1. 实体名

    应尽可能使用简短的英文单词或组合单词,采用标准Java命名方法。

    例如:Site SiteDic

  2. 属性、变量

    名词或组合名词,List和Map常加个s来表示。应避免简写,采用完整写法来表达清楚的意思。

    正面示例:

    private String name;
    private String siteName;
    private Site site;
    private List<Site> sites = new ArrayList<Site>();
    private Integer collectRecordCount = 0;