设计原则/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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。