小代码 大细节 – 应战 5 分钟的时刻优化代码
❝
能够遗憾,但不要后悔。
咱们留在这儿,从来不是身不由己。
——— 而是挑选在这儿经历生活
❞
目录
本文旨在共享一篇关于代码优化的文章,通过对示例代码的剖析和优化,期望读者能够学到一些有用的编程技巧和注意事项,以进步代码质量和开发效率。
- 事例共享
- 修正示例
- 总结
事例共享
论程序猿的基本素养,小代码看大细节,来测验下你的代码习气还
OK
吗?
函数介绍
本代码完成了过程式函数 IsValidIPPort
,用于判断给定的字符串是否表明合法的 IP
地址和端口号。
该函数将输入字符串依照冒号分隔成两部分,别离尝试将榜首部分解析为 IP
地址和第二部分解析为 Port
端口号。假如解析成功,则回来 true
,不然回来 false
。假如仅是 IP
地址,则只要解析成功就回来 true
。
优化提示
下面这段代码在功能上没有任何问题,但关于读者和后续维护者来说不够友好,Coding Review
肯定无法通过。
关于该示例而言,代码存在部分冗余和嵌套层级很深的 if...else
条件语句等问题。
咱们别离运用 Python
和 Go
言语进行了完成,测验样例如下:
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 优化
Go 优化
还有,记得把更优的完成方法码上地址发到评论区,共同进步吧!
总结
完成方法有许多,不同的人有不同的编码习气和偏好,重要的是能够写出可读性好、正确性高的代码。
比方,两种编码方法:A 功能更优,B 语义性更好
在挑选编程完成方法时,有时候不能一味寻求功能。关于同一问题,不同的完成方法可能存在功能和语义性方面的差异。一般来说,这种差异首要来自于“事务代码”层面的距离,而不是言语层面的距离。
一种完成方法可能在语义性方面更好,能够更直观地表达程序的意图,这有助于进步代码的可维护性。尽管这种完成方法在功能方面稍逊于另一种完成方法,但一般这种功能距离能够忽略不计。
因而,在实际开发中,咱们应该根据代码的具体情况挑选更加直观易懂的完成方法,这往往更为重要!