举个例子,以 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 好不好呢? 大家讨论下。。。。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于