好的開發(fā)者應(yīng)該擁有強(qiáng)大的抽象能力

筆者在這篇文章中提到了如何使用SQL來完成時(shí)間段的一個(gè)合并,在完成該任務(wù)的同時(shí)不禁感嘆為啥提供的這些函數(shù)功能剛好能滿足我的需求。如果從一個(gè)API的提供方,或者是庫的開發(fā)人員來講,提供一個(gè)顆粒分明,功能全面的API是特別考驗(yàn)一個(gè)開發(fā)者能力的。
讓我們來從頭思考這個(gè)時(shí)間段合并的問題。作為一個(gè)數(shù)據(jù)開發(fā)工程師,我在開發(fā)UDF的時(shí)候,是不是也得有類似庫開發(fā)人員的素養(yǎng)和考慮。將問題拆解為幾個(gè)通用的步驟,并使用組合來完成這個(gè)任務(wù)。

至于怎么拆解?

  • 一種是自己手動拆解過程。
  • 一種則是借鑒別人的方法,比如我們看看用其他語言實(shí)現(xiàn)該功能的時(shí)候,都用到了哪些庫函數(shù),然后我們用UDF實(shí)現(xiàn)同樣的庫函數(shù)即可。

假如我們采用編程語言該怎么實(shí)現(xiàn)這個(gè)業(yè)務(wù),我用GPT生成了Python代碼如下:

def merge_intervals(intervals):
    # Sort the intervals based on the start time
    intervals.sort(key=lambda x: x[0])

    merged = []
    for interval in intervals:
        # If the list of merged intervals is empty or the current interval does not overlap with the previous one,
        # simply append it.
        if not merged or merged[-1][1] < interval[0]:
            merged.append(interval)
        else:
            # Otherwise, there is overlap, so we merge the current and previous intervals.
            merged[-1][1] = max(merged[-1][1], interval[1])

    return merged

# Given intervals
intervals = [[1, 3], [2, 7], [5, 6], [4, 11], [10, 11], [11, 14]]

# Merging the intervals
merged_intervals = merge_intervals(intervals)
merged_intervals

從上面其實(shí)我們可以看到該函數(shù)使用了很多Python內(nèi)置的函數(shù):

  • sort
  • append
  • max

這樣我們就很容易提取出來我們要實(shí)現(xiàn)的通用UDF了。

但是,這種取巧的方法還是漏掉了一個(gè)最大的通用函數(shù),那就是聚合函數(shù),這個(gè)其實(shí)是隱藏在上面的Python代碼的for循環(huán)當(dāng)中的。如果你能提取到這個(gè)聚合函數(shù),那么說明你的能力起碼超越了一般的開發(fā)者了。

ps:
生成上述Python代碼的prompt如下:

你是一個(gè)軟件工程師,現(xiàn)在有2列數(shù)據(jù),如下所示:
1,3
2,7
5,6
4,11
10,11
11,14
第一列是開始時(shí)間,第二列是結(jié)束時(shí)間,每一行是一個(gè)時(shí)間段,寫一個(gè)Python代碼讀取上述格式的數(shù)據(jù),將所有的時(shí)間段進(jìn)行合并,合并規(guī)則如下:
1. 如果2個(gè)時(shí)間段的范圍有重合,則將其合并成一個(gè)新的時(shí)間段,新的時(shí)間段的開始時(shí)間是2個(gè)時(shí)間段的最小值,結(jié)束時(shí)間是2個(gè)時(shí)間段的最大值
2. 如何2個(gè)時(shí)間段的范圍沒有有重合,則將其保留
輸出:合并之后的所有時(shí)間段
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容