设计原则/DRYPrinciple/UserAuthenticator.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Common.Extension;
using System.Text.RegularExpressions;
namespace DesignModeConsole.设计原则.DRYPrinciple
{
/*
DRY原则: 不要写重复代码
三个典型代码重复:逻辑重复、功能语义重复、代码执行重复
*/
/// <summary>
/// 逻辑重复
/// </summary>
public class UserAuthenticator
{
//总结:尽管代码代码实现逻辑相同,但是语义不同,所以判定为不违反dry原则。如果要优化,
//可以拆分更细粒度的函数来解决问题,比如将是否为null拆分等
public bool Authenticate(string username, string password)
{
if (!IsValidUserName(username))
throw new ArgumentNullException();
if (!IsValidPassword(password))
throw new ArgumentNullException();
// 逻辑重复
return true;
}
// IsValidUserName和IsValidPassword重复代码被写了两次
private bool IsValidUserName(string userName)
{
if (userName.IsNullOrEmpty())
return false;
var length = userName.Length;
if (length < 4 || length > 64)
return false;
return true;
}
private bool IsValidPassword(string userName)
{
if (userName.IsNullOrEmpty())
return false;
var length = userName.Length;
if (length < 4 || length > 64)
return false;
return true;
}
/// <summary>
/// 违反单一职责原则和接口隔离原则
/// </summary>
/// <param name="userNameOrPassword"></param>
后面还有 104 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。