
Lambda 表达式的排版有些头疼,不知道怎么才能让可读性高点。
一个查询方法可能写成下面这样子:
query( () -> getFromCache( cacheKey, () -> getDAO().queryFirst(ExamProject.class, sql, projectId) ), afterRead ); 看起来很零散,afterRead 变量不容易看出是哪个方法的参数。
紧凑一点是这样子:
query(() -> getFromCache(cacheKey, () -> getDAO().queryFirst(ExamProject.class, sql, projectId) ), afterRead); 仍然不容易看出 query() 方法的边界。
如果把 Lambda 表达式提取出来,就是这样子:
Supplier<ExamProject> readFromDB = () -> getDAO().queryFirst(ExamProject.class, sql, projectId); Supplier<ExamProject> readFromCache = () -> getFromCache(cacheKey, readFromDB); query(readFromCache, afterRead); 这样前缀显得很长。不知道怎么才能让可读性高点?
1 zacard May 24, 2017 query 方法不要接收 2 个参数。可以改成: query(()->readFromCache) .ifAbsent(()->readFromDb) .afterRead(()->doSomthing); |
2 shot May 24, 2017 Optional.ofNullable(readFromCache()) .orElseGet(() -> readFromDb()) .ifPresent(result -> afterRead(result); |
3 hepin1989 May 24, 2017 via Android 每行一个,debug 用 |
4 PEP4JASON Jun 5, 2017 每个点 换一行 |