最多的代碼,python大作業代碼_大二期末python大作業有效代碼不低于5000行是什么水平?

 2023-10-06 阅读 27 评论 0

摘要:6月30日更新 最多的代碼,鑒于題主說老師已經收回對行數的要求,就請大家看過則罷,不要再點贊了(還有收藏的是什么鬼?)。本文說的不過是一些投機取巧的伎倆,不值取,不可取。 ~~~以下是原文~~~: 一個熟練工程序員ÿ

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代碼進去,里面盡是些永遠也不會發生的事件。

以上都是些不得已的方法,真正建議的,還是希望題主把這個任務當做一次挑戰,認真地完成,而不要像上面那樣投機取巧。投機取巧會成為一種習慣的。認真做作業,即便最終沒得到老師認可又如何,盡吾志者而不能至也,其孰能譏之乎?

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/122506.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息