举个例子,以 solo 经常出现的代码块为例子,以下是新增文章的部分代码
public String addArticleInternal(final JSONObject article) throws ServiceException { String ret = article.optString(Keys.OBJECT_ID); if (Strings.isEmptyOrNull(ret)) { ret = Ids.genTimeMillisId(); article.put(Keys.OBJECT_ID, ret); } try { // Step 1: Add tags String tagsString = article.optString(Article.ARTICLE_TAGS_REF); tagsString = tagsString.replaceAll(",", ",").replaceAll("、", ","); article.put(Article.ARTICLE_TAGS_REF, tagsString); final String[] tagTitles = tagsString.split(","); final JSONArray tags = tag(tagTitles, article); // Step 2; Set comment/view count to 0 article.put(Article.ARTICLE_COMMENT_COUNT, 0); article.put(Article.ARTICLE_VIEW_COUNT, 0); // Step 3: Set create/updat date final JSONObject preference = preferenceQueryService.getPreference(); final Date date = new Date(); if (!article.has(Article.ARTICLE_CREATE_DATE)) { article.put(Article.ARTICLE_CREATE_DATE, date); }
大概意思就是往 article 里放参数,最后存数据库;
如果改成以下的形式,会如何呢?
public String addArticleInternal(final NJSONObject article) { article.set( comment_count -> 0, view_count -> 1, create_date -> article.has(create_date) ? create_date : Instant.now() ... );
这里的 comment_count 其实是一个参数的名字,java8 的反射已经修改过了,可以直接拿到方法的参数名字(以前是要用辅助的类,参考 latke;但目前需要加编译参数,估计以后就不要了)
那么这种 api 好不好呢? 大家讨论下。。。。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于