How do I move a line in a text file up or down by one line?

I have some text files, and I’d like to be able to move an arbitrary line in any of the files up or down one line (lines at the beginning or end of the file would stay where they are). I have some working code but it seems kludgy and I’m not convinced I have all the edge cases covered, so I’m wondering if there’s some tool or paradigm that does this better (e.g. easier to understand the code (for other readers or me in 6 months), easier to debug, and easier to maintain; “more efficient” isn’t very important).