6月30日更新
最多的代碼,鑒于題主說老師已經收回對行數的要求,就請大家看過則罷,不要再點贊了(還有收藏的是什么鬼?)。本文說的不過是一些投機取巧的伎倆,不值取,不可取。
~~~以下是原文~~~:
一個熟練工程序員,每天有效代碼大概50行(很多人不信,用項目最終代碼量除以人天就知道了),月薪大概12000元。外包出去得上萬吧。
我們這邊剛開一個報價20萬的項目,預計有效代碼也就5000行。
如果題主真的沒有什么好辦法了,建議題主從以下幾個方面著手增加代碼量
1 增加項目復雜度。增加項目模塊,比如UI用PyQt寫一遍,再用HTML5寫一遍,比如后端用后端渲染方式寫一遍,又以RESTful寫一遍,老師問為什么寫這么多遍,你說你項目是跨平臺的,搞個桌面版,搞個網頁版,還搞好多接口給未來移動端用。后臺每個業務都單獨做一個服務,互相調用。
2 不追求pythonic。能寫兩行的不要寫成一行,不用列表推導,不用匿名函數,少用繼承,少用生成器,少用裝飾器;分支循環多嵌套。
3 大量硬編碼。把模板、配置、字符串、變量、SQL硬編碼在代碼里。
4 分行寫。如
容器類型分行寫:
some_list: list = [
e1,
e2,
...
]
some_dict: dict = {
k1: v1,
k2: v2,
...
}
鏈式調用分行寫。如(下面代碼中也包含了SQL分行寫和硬編碼)
sc = SparkSession \
.builder \
.appName("some_app_name")\
.enableHiveSupport()\
.getOrCreate()
... ...
spark \
.sql("""select name
,age
from student
where grade > 3
and sex = 0
""") \
.write \
.saveAsTable(sometable, mode='overwrite')
函數參數分行寫
a = some_func(
arg1,
arg2,
arg3,
...
)
5 手動展開。如
# 常規寫法
sql_pattern = 'select city, population from country where city = {}'
cities = [city1, city2, city3, city4, ...., city100]
for city in cities:
sql = sql_pattern.format(city)
do_something_with_sql(sql)
# 填充代碼量的寫法
SQLs: list = [
"""select city
,population
from country
where city = city1
""",
"""select city
,population
from country
where city = city2
""",
...
"""select city
,population
from country
where city = city100
""",
]
for sql in SQLs:
do_something_with_sql(sql)
6 注釋變有效代碼。如
按下面這種方式,代碼檢測軟件可能認為是注釋而不是有效代碼,
"""
this module contains some utils functions.
Usage:
bala bala ...
"""
按下面這種方式,代碼檢測軟件會認為是有有效代碼,而功能沒有發生改變,
__doc__ = """
this module contains some utils functions.
Usage:
bala bala ...
"""
這適用于模塊注釋、類注釋、函數注釋。
按下面這種方式,代碼檢測軟件可能認為是注釋而不是有效代碼,
if not IPPool.has_any_ip():
# 如果沒有IP了
do_something()
把注釋改成日志,就成了有效代碼,
if not IPPool.has_any_ip():
log.info('沒有IP了')
do_something()
7 多寫日志,日志內容多分行。
8 多寫函數快捷方式。比如你一個函數只要傳入不同參數就能完成多個任務,那你多寫幾個函數來調用這個多功能函數,把參數寫死,變成多個單功能函數。老師問為什么重復實現,你說這是shortcut,很多庫都這么比如
def request(r, method):
pass
# 可以寫成
def get(r):
return request(r, method="get")
def post(r):
return request(r, method="post")
9 重復實現輪子。抄一些開源代碼在你的項目里。
10 多寫測試。一個項目里,測試代碼能占到總代碼量的三分之二之多。你多編用戶故事,多編工作流,多寫測試用例,何愁代碼量上不來。
11 不知道前端代碼算不算項目代碼量,如果算的話那可就簡單了,嘿嘿,鬼知道HTML里能塞啥子東西進去。你盡可能塞些JS代碼進去,里面盡是些永遠也不會發生的事件。
以上都是些不得已的方法,真正建議的,還是希望題主把這個任務當做一次挑戰,認真地完成,而不要像上面那樣投機取巧。投機取巧會成為一種習慣的。認真做作業,即便最終沒得到老師認可又如何,盡吾志者而不能至也,其孰能譏之乎?
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态