小代码 大细节 – 应战 5 分钟的时刻优化代码

能够遗憾,但不要后悔。

咱们留在这儿,从来不是身不由己。

——— 而是挑选在这儿经历生活

目录

本文旨在共享一篇关于代码优化的文章,通过对示例代码的剖析和优化,期望读者能够学到一些有用的编程技巧和注意事项,以进步代码质量和开发效率。

  1. 事例共享
  2. 修正示例
  3. 总结

事例共享

论程序猿的基本素养,小代码看大细节,来测验下你的代码习气还 OK 吗?

函数介绍

本代码完成了过程式函数 IsValidIPPort,用于判断给定的字符串是否表明合法的 IP 地址和端口号。

该函数将输入字符串依照冒号分隔成两部分,别离尝试将榜首部分解析为 IP 地址和第二部分解析为 Port 端口号。假如解析成功,则回来 true,不然回来 false。假如仅是 IP 地址,则只要解析成功就回来 true

优化提示

下面这段代码在功能上没有任何问题,但关于读者和后续维护者来说不够友好,Coding Review 肯定无法通过。

关于该示例而言,代码存在部分冗余和嵌套层级很深的 if...else 条件语句等问题。

咱们别离运用 PythonGo 言语进行了完成,测验样例如下:

Python 版别

import re
def parse_ip(ip: str) -> str:
    """ 为了稍微添加编程复杂度,成心这样写,不要修正这个 """
    ip_regex = r'^(\d{1,3}.){3}\d{1,3}$'
    match = re.match(ip_regex, ip)
    if match:
        return "yes"
    else:
        return "no"
# 请优化这段代码
def is_valid_ip_port(ip_port: str) -> bool:
    parts = ip_port.split(":")
    if len(parts) == 1:
        res = parse_ip(parts[0])
        if res == "yes":
            return True
        else:
            return False
    elif len(parts) == 2:
        res = parse_ip(parts[0])
        if res == "no":
            return False
        port = int(parts[1])
        if port < 0 or port > 65535:
            return False
        else:
            return True
    else:
        return False
if __name__ == '__main__':
    flag1 = is_valid_ip_port("192.168.0.100:8080")   # True
    flag2 = is_valid_ip_port("192.168.0.1001:8080")  # False
    flag3 = is_valid_ip_port("192.168.0.100:80801")  # False
    flag4 = is_valid_ip_port("192.168.0.100")        # True
    flag5 = is_valid_ip_port("192.168.0.1001")       # False
    print(flag1)
    print(flag2)
    print(flag3)
    print(flag4)
    print(flag5)

Go 版别

package main
import (
   "fmt"
   "net"
   "strconv"
   "strings"
)
// 请优化这段代码
func IsValidIPPort(ipAddrPort string) bool {
    parts := strings.Split(ipAddrPort, ":")
    if len(parts) == 1 {
        ip := net.ParseIP(parts[0])
        if ip == nil {
            return false
        } else {
            return true
        }
    } else if len(parts) == 2 {
        ip := net.ParseIP(parts[0])
        if ip == nil {
            return false
        } else {
            port, err := strconv.Atoi(parts[1])
            if err != nil {
                return false
            } else {
                if port < 0 || port > 65535 {
                    return false
                } else {
                    return true
                }
            }
        }
    } else {
        return false
    }
}
func main() {
    flag1 := IsValidIPPort("192.168.0.100:8080")  // true
    flag2 := IsValidIPPort("192.168.0.1001:8080") // false
    flag3 := IsValidIPPort("192.168.0.100:80801") // false
    flag4 := IsValidIPPort("192.168.0.100")       // true
    flag5 := IsValidIPPort("192.168.0.1001")      // false
    fmt.Println(flag1)
    fmt.Println(flag2)
    fmt.Println(flag3)
    fmt.Println(flag4)
    fmt.Println(flag5)
}

修正示例

5 分钟到了,大家都自己改完了嘛?(不要直接参考 下面的完成代码示例,自己考虑,着手写出来,让代码变得更简洁,说不定比我完成的高雅呢)

Python 优化

小代码 大细节 - 来测试下你的代码习惯还 OK 吗

Go 优化

小代码 大细节 - 来测试下你的代码习惯还 OK 吗

还有,记得把更优的完成方法码上地址发到评论区,共同进步吧!

总结

完成方法有许多,不同的人有不同的编码习气和偏好,重要的是能够写出可读性好、正确性高的代码。

比方,两种编码方法:A 功能更优,B 语义性更好

在挑选编程完成方法时,有时候不能一味寻求功能。关于同一问题,不同的完成方法可能存在功能和语义性方面的差异。一般来说,这种差异首要来自于“事务代码”层面的距离,而不是言语层面的距离。

一种完成方法可能在语义性方面更好,能够更直观地表达程序的意图,这有助于进步代码的可维护性。尽管这种完成方法在功能方面稍逊于另一种完成方法,但一般这种功能距离能够忽略不计。

因而,在实际开发中,咱们应该根据代码的具体情况挑选更加直观易懂的完成方法,这往往更为重要!