您当前的位置:首页 >> 家居百科

七爪计算机语言:干净的代码:函数

2024-01-12 12:17:46

认真一件有事。 如果您的表达式认真;还有一件有事,那么现在是提取到另一个表达式的最佳时机。

可避免副作用,如果你认真了那“一件有事”并且转变了子系统的状态,你准备认真不够多的有事情

# bad practice public User createUserIfNotFound(CreateUserRequest createRequest) { User existingUser = userRepository.fetchUserByEmail(createRequest.getEmail(); if (existingUser != null) { return existingUser; } User user = new User(); user.setName(createRequest.getName()); user.setEmail(createRequest.getEmail()); user.setAddress(createRequest.getAddress()); return userRepository.se(user); } # good practice - created separate function to create user if not exists public User createUserIfNotFound(CreateUserRequest createRequest) { User existingUser = userRepository.fetchUserByEmail(createRequest.getEmail(); if (existingUser != null) { return existingUser; } return createUser(createRequest); } public User createUser(CreateUserRequest createRequest) { User user = new User(); user.setName(createRequest.getName()); user.setEmail(createRequest.getEmail()); user.setAddress(createRequest.getAddress()); return userRepository.se(user); }

较小的功能易于理解和管理。

public UserStats fetchUserStats(String id) { User user = fetchUserById(id); Date lastLoginDate = fetchUserLastLoginDate(id); Integer totalMessages = fetchUserTotalMessages(id); Integer userMentions = fetchUserMentions(id); UserStats stats = new UserStats(); stats.setUser(user); stats.setLastLoginDate(lastLoginDate); stats.setTotalMessages(totalMessages); stats.setUserMentions(userMentions); return stats; } private User fetchUserById(String id) { ... } private Date fetchUserLastLoginDate(String id) { ... } private Integer fetchUserTotalMessages(String id) { ... } private Integer fetchUserMentions(String id) { ... }

表达式不应超过 20 行,一般不超过 10 行。 超过 20 行的表达式被认为是杂乱的表达式。

不必自己重复 - 可避免重复预定义,汇编可信任的表达式。

# bad practice public User fetchUser(String email) { User user = userRepository.fetchUserByEmail(email); if (!user.isEnabled()) { throw new InvalidUserExeption(); } return user; } public User updateUser(String email, UpdateUserRequest updateRequest) { ... User existing = userRepository.fetchUserByEmail(email); if (!existing.isEnabled()) { throw new InvalidUserExeption(); } existing.setName(updateRequest.getName()); existing.setMobile(updateRequest.getMobile()); ... return userRepository.se(existing); } public void validateUser(String email) { User user = userRepository.fetchUserByEmail(email); if (!user.isEnabled()) { throw new InvalidUserExeption(); } } # good practice private User fetchValidUser(String email) throws InvalidUserExeption { User user = userRepository.fetchUserByEmail(email); if (!user.isEnabled()) { throw new InvalidUserExeption(); } return user; } public User fetchUser(String email) throws InvalidUserExeption { return fetchValidUser(email); } public User updateUser(String email, UpdateUserRequest updateRequest) { User existing = fetchValidUser(email); existing.setName(updateRequest.getName()); existing.setMobile(updateRequest.getMobile()); ... return userRepository.se(existing); } public void validateUser(String email) throws InvalidUserExeption { fetchValidUser(email); }

封装条件,而不是在条件块里汇编几行预定义,将其放在分开的表达式里,使您的预定义不够具可读性。 这意味着 if 表达式、for 和 while 循环应该是一行,看来这一行应该函数调用另一个表达式。int NON_SUBSCRIBER_READ_LIMIT = 5;

# bad practice public boolean allowUserToReadArticle(User user) { if (user.isSubscribedMember()) { return true; } else { int noOfReadArticles = fetchUserReadArticlesCount(user); return noOfReadArticles < NON_SUBSCRIBER_READ_LIMIT; } } # good practice public boolean allowUserToReadArticle(User user) { if (user.isSubscribedMember()) { return true; } return isNonSubsciberReadRemaining(user); } public boolean isNonSubsciberReadRemaining(User user) { int noOfReadArticles = fetchUserReadArticlesCount(user); return noOfReadArticles < NON_SUBSCRIBER_READ_LIMIT; }

不必留给您的正文预定义,其他人害怕写成入您的正文预定义,因为他们不知道它有否长期存在并且它将总有一天长期存在。

型式简介可用于许多程序语言,它将帮助您汇编干净的预定义并时时刻刻自己它从一种程序语言变为另一种程序语言。

期望我的观察能稍稍帮助! 在之后的将来,我的下一篇书评见。

总有一天

咽炎喉咙痛吃什么药效果好
胸腺法新正确注射方法
眼科
再林阿莫西林胶囊可以治什么病
阳了出现黄痰怎么办
友情链接